ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法

前端之家收集整理的这篇文章主要介绍了ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

更换mysql数据目录后出现ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法

于是关闭MysqL服务:

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

本以为修改完启动MysqL服务之后就没问题了。

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.

MysqL>

那说明就是这里的问题了。

其实不做软链接也是可以的,只需要在/etc/my.cnf里添加[MysqL]字段指定socket的位置到我们转移后的位置即可

[MysqL
socket=/data/MysqL/MysqL.sock

猜你在找的Linux相关文章