Mysql不启动mysqld.sock丢失

我重启服务器后,除了“mysql”,一切正常,我试图手动启动它“ /etc/init.d/mysql restart ”或“ service mysql restart ”,它失败

在日志文件中说:

 Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists! 

我检查了那个path,但是我没有find那个socket文件,请指教?

要在您的系统上运行find所有套接字文件:

 sudo find / -type s 

我的Mysql服务器系统在/var/lib/mysql/mysql.sock打开了套接字

一旦find套接字的打开位置,使用套接字文件的path将该行添加或编辑到/etc/my.cnf文件中:

 socket=/var/lib/mysql/mysql.sock 

有时启动命令行可执行文件的系统启动脚本指定一个标志--socket=path 。 这个标志可以覆盖my.cnf位置,这会导致在my.cnf文件指示的位置找不到套接字。 然后当你尝试运行mysql命令行客户端时,它将读取my.cnf来查找套接字,但是它不会find它,因为它与服务器创build的地方不同。 所以,除非你关心套接字所在的位置,只要改变my.cnf来匹配就可以了。

如果你是Linux系统中的超级用户,基于上面的只是这样做:

 kill -9 <pid_of_mysql> 

或者有时你可以这样做:

 pkill -9 mysqld 

当你这样做后,你可能想在/var/run/mysqld/查找一个pid文件并将其删除

确保您的套接字上的权限是这样的,无论用户mysqld正在运行,可以读/写它。 一个简单的testing是将其打开到完整的读/写,看看它是否仍然有效:

chmod 777 '/var/run/mysqld/mysqld.sock'

如果解决了这个问题,则可以根据您的安全设置根据需要定制套接字的权限和所有权。

另外,运行mysqld进程的用户必须能够访问套接字所在的目录。

参考: https : //stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq

我试图在“安全模式”中启动mysql来创buildsock文件和pid文件,但是它失败了一些错误“绑定”,

  1. 我把my.cnf中的“bind ip”参数的IP地址改为localhost
  2. 以安全模式启动mysql。
  3. 在正常模式下重启mysql,一切正常。

是的,正如上面说的那样,首先find你的套接字文件#find / -type s ,如果你在/ var / run / mysqld /目录下发现了一个mysqld.sock文件,检查是否有任何mysqld正在运行的实例#netstat -anpt | grep 3306 or #ps aux | grep mysqld #netstat -anpt | grep 3306 or #ps aux | grep mysqld #netstat -anpt | grep 3306 or #ps aux | grep mysqld如果你发现有任何正在运行的进程停止它(#kill -9 pid)并删除套接字文件。 然后尝试重新启动它,如果mysql不创build套接字文件,然后尝试启动它

 #/usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=/usr --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock 

同时检查你的my.cnf文件(/etc/mysql/my.cnf)并注释绑定地址字段,如果你发现任何skip-network字段注释它。

问候,sreejith kb