更换mysql数据目录后出现ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法
service MysqLd stop
转移MysqL数据目录
mv /var/lib/MysqL/ /data/
编辑my.cnf
vi /etc/my.cnf
修改其中的datadir和socket到新的路径
[MysqLd]
datadir=/data/fuhj/MysqL
socket=/data/fuhj/MysqL/MysqL.sock
service MysqLd start
但是尽管启动服务没有问题,但是通过MysqL客户端连接的时候却报错:
[root@hostXXX data]# MysqL -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MysqL server through socket '/var/lib/MysqL/MysqL.sock' (2)
在网上搜了半天也没个所以然,一个个都是相互抄袭,各种拷贝,没有一个靠谱的。
自己分析了一下,提示说无法通过socket文件/var/lib/MysqL/MysqL.sock连接到MysqL服务器,也就是说对于MysqL程序来说,尽管我把socket文件从/var/lib/MysqL/MysqL.sock转移到了/data/MysqL/MysqL.sock我在my.cnf里指定了MysqLd知道了,但是对于MysqL还是会从默认的安装目录/var/lib/MysqL/里找这个MysqL.sock文件,找不着,就不知道从哪里启动了。
为了验证我的想法,我首先从转移后的路径做了个软连接指向到MysqL的默认目录里,如果MysqL程序能连上说明想法是正确的。
ln –s /data/MysqL/MysqL.sock /var/lib/MysqL/
做完软连接,重启MysqL服务,再次通过MysqL程序连接,没有问题,可以连上了。
[root@host160 lib]# MysqL -u root -p
Enter password:
Welcome to the MysqL monitor. Commands end with ; or \g.
Your MysqL connection id is 3
Server version: 5.1.71 Source distribution
Copyright (c) 2000,2013,Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
那说明就是这里的问题了。
其实不做软链接也是可以的,只需要在/etc/my.cnf里添加[MysqL]字段指定socket的位置到我们转移后的位置即可