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 ,我能够解决这个错误。 我希望这有助于那些有这个问题,但无法解决它使用上面的详细解答。