应对/tmp/mysqld.sock丢失问题
https://blog.csdn.net/endzhi/article/details/86697460
Mysql有两种连接方式:
(1)TCP/IP
(2)socket
mysql.sock是创建与mysqld服务器相关的MySQL通信端点所使用的套接字,是随每一次 mysql server启动生成,默认权限srwxrwxrwx
Socket 链接方式 如以下2种方式
mysql -uroot -p123456 (无定义主机)
mysql -uroot -h localhost -p
mysql -uroot -p123456
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysqld.sock’
是你的mysql.sock 文件不存在了,可能被你删除了。常见是被手动或cron 清空了/tmp/目录。
连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。
临时解决方式
方法1
先通过find / -name mysql.sock查询真实位置,
即使用mysql -uroot -p123456 -S /mysql/mysqld.sock 可强制套接字文件进行登陆。
方法2
使用TCP链接方式
mysql -u user1 -h 127.0.0.1 -p123456
永久解决方式
直接重启mysql即可生成新的mysqld.sock文件,并更新信息,解决丢失的问题。
将mysqld.sock放mysql安装目录,减少/tmp被清空带来的风险。
修改my.cnf 中的
socket = /opt/mysql/mysqld.sock
重启mysql 服务,即可新的位置生成新的mysqld.sock
注意: 修改为非 /tmp/mysqld.sock 会遇到其他问题,而PHP标准配置正是通过’/tmp/mysql.sock’来连接数据库,
解决方式“创建软链接”
ln -s /opt/mysql/mysqld.sock /tmp/mysqld.sock
如果还报这丢失,可能由于MySQL压根没启动运行,(mysqld.sock随MySQL关闭而消失)。
————————————————
版权声明:本文为CSDN博主「endzhi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/endzhi/article/details/86697460
来源:https://www.cnblogs.com/jinanxiaolaohu/p/12387258.html