错误信息:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
出现问题原因:
有可能是 my.cnf 配置文件中设置了 [mysqld] 的参数 socket ,而没有设置[client]的参数socket
mysql.sock 文件有什么用:
mysql 支持 socket 和 TCP/IP 连接。那么 mysql.sock 这个文件有什么用呢?连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。/tmp 文件夹属于临时文件,随时可能被删除。
1.TCP 连接(如果报错 /tmp/mysql.sock,你可以尝试这种方式连接)
mysql -uroot -h 127.0.0.1 -p
2.socket 连接
mysql -uroot -p
解决方式:
添加 [client] 配置项,如下所示
配置前:(配置 [client] 前,会报错’/tmp/mysql.sock’ (2))
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
配置后:(配置 [client] 后,重启 mysql服务)
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock(跟这个socket路径一样)
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid[client]
port=3306
socket=/var/lib/mysql/mysql.sock
end,本文结束,希望对大家有所帮助!
启动 mysql 报错:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
1.先查看mysql启动状态
#/etc/rc.d/init.d/mysqld status
2.mysql.sock位置查找与验证?
# find / -name mysql.sock
/Data/mydata/mysql.sock
验证目录是否正确
#mysql -u root -p -S /Data/mydata/mysql.sock
备注:-S参数socket file文件验证
3.验证mysql.sock文件权限和用户是否正确?
如果是权限问题,则先改变权限
#chown -R mysql:mysql /Data/mydata/mysql.sock
[root@localhost ~]# /etc/init.d/mysqld start
启动 MySQL: [ OK]
4.永久解决
修改/etc/my.cnf
添加以下内容到/etc/my.conf:
[client]
socket = /Data/mydata/mysql.sock
[mysqld]
socket = /Data/mydata/mysql.sock
扫码领红包微信赞赏支付宝扫码领红包