centos:另一个MySQL守护程序已经在相同的unix套接字下运行
启动mysqld服务时出现奇怪的错误:
Another MySQL daemon already running with the same unix socket.
我试图列出正在运行的服务并停止它们,但是在启动mysqld服务时会发生同样的错误。
我可以尝试删除mysqld并重新安装它,但是这也会删除数据库?
为防止发生此问题,必须从命令行正常closures服务器,而不是closures服务器电源。
# shutdown -h now
这将closures机器之前停止正在运行的服务。
基于Centos,当遇到这个问题时,另一个让它重新备份的方法是移动mysql.sock:
# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak # service mysqld start
重新启动服务将创build一个名为mqsql.sock的新条目
TL; DR:
以root用户身份运行,你将全部设置:
rm $(grep socket /etc/my.cnf | cut -d= -f2) && service mysqld start
更长的版本:
您可以通过在/etc/my.conf
手动查找来findMySQL套接字文件的位置,或者仅仅使用
grep socket /etc/my.cnf | cut -d= -f2
它很可能是/var/lib/mysql/mysql.sock
。 然后(作为根,当然,或与sudo
prepended)删除该文件:
rm /var/lib/mysql/mysql.sock
然后启动MySQL守护进程:
service mysqld start
删除mysqld
根本不能解决问题。 问题是CentOS&RedHat在崩溃后不清理sock
文件,所以你必须自己做。 当然,也build议避免closures系统电源,但是有时您无法避免,所以这个程序将解决问题。
我发现在这个问题的任何人的解决scheme更改套接字目录my.cnf文件中的新位置
socket=/var/lib/mysql/mysql2.sock
并service mysqld start
或者是GeckoSEO回答的快速方式
# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak # service mysqld start
我的解决scheme是在硬关机/ var / lib / mysql /目录下的mysql.sock。 Mysql认为它在运行时已经运行了。
只要打开一个错误报告与您的操作系统供应商,要求他们将套接字放在/ var / run中,以便在重新引导时自动删除它。 在不重新启动的情况下保留这个套接字是一个错误,/ var / run是这些types的文件的位置。
为了自动清理.sock文件,将这些行放在/etc/init.d/mysqld文件中,紧跟在“start”之后
test -e /var/lib/mysql/mysql.sock SOCKEXIST=$? ps cax | grep mysqld_safe NOPIDMYSQL=$? echo NOPIDMYSQL $NOPIDMYSQL echo SOCKEXIST $SOCKEXIST if [ $NOPIDMYSQL -eq 1 ] && [ $SOCKEXIST -eq 0 ] ; then echo "NOT CLEAN" rm -f /var/lib/mysql/mysql.sock echo "FILE SOCK REMOVED" else echo "CLEAN" fi
它为我工作。 我必须这样做,因为我没有UPS,经常有电源故障。
问候。
在操作系统重新引导期间,MySQL服务没有正常closures,可能会出现这种情况。 /var/lib/mysql/mysql.sock已经离开。 这可以防止“mysqld”启动。
这些步骤可能有助于:
1:服务mysqld启动killall -9 mysqld_safe mysqld服务mysqld启动
2:rm /var/lib/mysql/mysql.sock服务mysqld启动
要启动MySQL服务,您可以删除“/var/lib/mysql/mysql.sock”并再次启动MySQL服务:
删除套接字文件:
[root@server ~]# rm /var/lib/mysql/mysql.sock rm: remove socket `/var/lib/mysql/mysql.sock'? yes
启动MySQL服务:
[root@server~]# service mysqld start Starting mysqld: [ OK ]
它会帮助你解决你的问题。
这只是因为mysql服务exception终止而发生的。 删除或取出/var/lib/mysql/mysql.sock文件的备份并重新启动mysql。
请让我知道,如果任何问题..
我刚刚通过这个问题,没有任何的build议解决了我的问题。 虽然我无法在启动时启动MySQL,但在日志中发现了相同的消息(“另一个MySQL守护进程已经运行在相同的unix套接字”),但是一旦我到达控制台,我就可以启动服务了。
在我的configuration文件中,我发现了以下行: bind-address=xx.xxx
。 我随机决定将其注释掉,引导时的错误消失了。 因为绑定地址提供了安全性,所以我决定进一步探索它。 我使用机器的IP地址,而不是IPv4回送地址 – 127.0.0.1
。
总之,通过使用127.0.0.1
作为bind-address
,我能够解决这个错误。 我希望这有助于那些有这个问题,但无法解决它使用上面的详细解答。