step1:
先停掉服务
service mysqld stop
step2:
修改mysql配置文件
vim /etc/my.cnf
把其中的datadir=/var/lib/mysql/ 和socket=/var/lib/mysql/mysql.sock
改成datadir=/newpath/ 和datadir=/newpath/mysql.sock
newpath换成你自己的存放数据的路径
step3:
启动mysql服务
service mysqld start
配置基本完成,但是可能会出现以下问题:
可能会报错:Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
可以按照提示命令去查看错误信息,但是你会发现里面提供的信息基本没什么参考价值,这个时候可以打开mysql的日志文件
vim /var/log/mysqld.log
shift + g 翻到最后
可能会看到这个关键信息 Could not create unix socket lock file /data/part1/dbdata/mysql.sock.lock
查阅之后发现可能是权限问题,这里就把你自己的newpath权限设置一下,最暴力的方法是就是改成777
chmod -R 777 newpath
再重启mysql
service mysqld restart
能正常启动了
但是当你尝试连接myqsl
mysql -uroot -p
又出现一个错误:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
明明配置文件里面已经把mysql.sock文件的路径改掉了,这里面还是指向老的路径,为什么呢?我不知道,大概是修改的my.cnf里面的配置是 给mysql的server端识别的,而你连接mysql的收,你是client端,client端还是只认老的路径。通过查看这个文章找到了答案,在my.cnf文件里面加上[client]
socket=/data/part1/dbdata/mysql.sock
加在最后就行。保存重启mysql,问题完美解决。
网友评论