整个过程一波三折
我现在甚至不知道我最终是如何解决这一问题的
就把大致的过程记录一下吧
2022.7.26更新
第一次修改的时候看到的时候修改,socket,datadir的,当时也是纳闷,我修改个数据存放位置,为什么要改动socket,但是但的当时还是修改了,现在需要重装系统,好像还没一个月的……,又需要修改
按照自己的教程发现最后
失败 了
后来主要是修改了
这个
但是这个在我说的文件中,这次没有这一条,所以我没加,那我是在哪找到的呢
这个里面找到的
这篇博文链接
ubuntu 18.04.3修改Mysql默认数据存储路径
这里就没有修改socket,只修改了datadir,我觉得还是很对的,之后如果还需要改可以参考这一篇文章
以下就别看啦
这里以迁移到/mysqldata/为例
- 首先查看数据库数据存储位置
mysql> select @@datadir;
+-------------------+
| @@datadir |
+-------------------+
| /mysqldata/mysql/ |
+-------------------+
1 row in set (0.00 sec)
- 更改数据库存储路径
拷贝原数据路径到目的路径
cp -R /var/lib/mysql /mysqldata/
更改新的目的数据库权限,用于service启动
chown -R mysql:mysql /mysqldata/mysql
- 更改配置文件
mysql的配置文件有好多个,同样的my.cnf,分布在系统的各个地方,但是有优先级的(排在前面的先执行)我记得是三个地方有兴趣可以查下,这里给出两个地址
/etc/my.cnf
/etc/mysql/my.cnf
注意修改时需要root权限,执行sudo su
切换到root下
在root下,可以用gedit编辑器比较方便,在原用户下是只读文件这里也能编辑,当然如果一定要在原用户下,可以修改权限,或者用vim打开,修改后强制保存
在这两个文件中添加或修改socket
[client]
socket = /home/mysqldata/mysql/mysqld.sock
[mysqld]
socket = /home/mysqldata/mysql/mysqld.sock
新版的MySQL配置文件可能打开只有
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
我就是这样的,我在/etc/mysql/mysql.conf.d/mysqld.cnf中看到了配置信息
所以除了添加以上my.cnf配置外,我还在这个文件中修改了socket,datadir
# socket = /var/run/mysqld/mysqld.sock
# datadir = /var/lib/mysql
socket = /home/mysqldata/mysql/mysqld.sock
datadir = /home/mysqldata/mysql
在这个配置文件中看到一句话
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
看来如果要修改socket还要修改/etc/mysql/debian.cnf文件
然后就是将这个文件中的socket改为和上方的相同
这里修改完后还有一个配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
还是需要修改datadir
改为
# Allow data dir access
/home/mysqldata/mysql/ r,
/home/mysqldata/mysql/** rwk,
- 重启配置
# 不推荐这个命令,可能会报错
systemctl restart mysqld.service
Failed to restart mysqld.service: Unit mysqld.service not found.
我使用的是如下命令
sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart
这是如果都没报错那就万事大吉
- 测试
mysql -uroot -p
mysql> select @@datadir;
如果变了那就成功!,如果没变,可以继续尝试my.cnf中socket地址的修改
- 补充
虽然以上是成功了,但是在Navicat中建立时,又报错!
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
可以将localhost修改为127.0.0.1即可
这个问题就解决了
至此,全部问题解决