mysql 服务离线 - mysql.sock 位置

mysql 服务离线 - mysql.sock 位置

我们的 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

相关内容