我们的 mysql 服务先前处于离线状态,当我们尝试重新启动它时,出现以下错误:
系统错误 2:没有此文件或目录错误 2002 (HY000):无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)
我们检查了 mysql 配置,它正在查找:datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock
但我们的 mysql.sock 文件不再存在于 /var/lib/mysql/ 中
我们尝试了“whereis mysql.sock”,它返回:mysql: /usr/bin/mysql /usr/lib/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
一些帮助指南建议运行:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
但是 /temp/ 是空的。
有人知道我们该如何解决这个问题吗?
答案1
套接字是服务启动时创建的临时文件,类似于 tcp 或 udp 端口,请检查 mysql 日志以查看 mysql 无法启动的原因。
答案2
尝试touch /var/lib/mysql/mysql.sock
只要文件存在,它就会继续设置套接字。您也可以将所有权设为 mysql 用户。
该位置必须对 mysql 用户可写且可读。(您的 mysql 用户可能不同,我认为默认是 mysql)
chown -R mysql /var/lib/mysql/
以下是一个粗略的迷你教程: http://anthologyoi.com/computers/cant-connect-to-local-mysql-server-through-socketerror.html
此外,如果 mysqld 进程正在运行,您可能需要终止所有实例,然后尝试重新启动。pidof mysqld
应该告诉您是否存在任何实例。
另外,whereis
命令find / -name mysql.sock
可能会更有帮助。
答案3
如果它拒绝启动,则可能需要重新安装以恢复文件。
cp -a /var/lib/mysql /root/mysql_backup
for i in $(rpm -qa | grep "mysql"); do echo "Erasing $i"; echo "$i" >> /root/erased_rpms; rpm -e $i; done
(erased_rpms 只是为了防止之后做了太多事情)
yum install mysql-server