我重启服务器后,除了“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文件,但是它失败了一些错误“绑定”,
是的,正如上面说的那样,首先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