centos:另一个已经使用相同的unix套接字运行的MySQL守护进程

时间:2013-12-05 17:59:05

标签: mysql sockets unix centos6

启动mysqld服务时出现一个奇怪的错误:

Another MySQL daemon already running with the same unix socket.

我尝试列出正在运行的服务并停止它们,但启动mysqld服务时会发生同样的错误。

我可以尝试删除mysqld并重新安装它,但是这也会删除数据库吗?

10 个答案:

答案 0 :(得分:225)

为防止出现此问题,您必须从命令行正常关闭服务器,而不是关闭服务器电源。

#shutdown -h now

这将在关闭机器之前停止正在运行的服务。

基于Centos,遇到此问题时再次备份它的另一种方法是移动mysql.sock:

# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

# service mysqld start

重新启动服务会创建一个名为mqsql.sock

的新条目

答案 1 :(得分:18)

TL; DR:

以root身份运行,您将全部设置:

rm $(grep socket /etc/my.cnf | cut -d= -f2)  && service mysqld start

更长的版本:

你可以通过在/etc/my.conf中手动浏览,或者只是使用

找到MySQL套接字文件的位置
grep socket /etc/my.cnf | cut -d= -f2

可能是/var/lib/mysql/mysql.sock。然后(当然是root,或者sudo前置)删除该文件:

rm /var/lib/mysql/mysql.sock

然后启动MySQL守护程序:

service mysqld start

删除mysqld根本无法解决问题。问题是CentOS&崩溃后RedHat不会清除sock文件,因此您必须自己完成。当然也建议避免关闭系统电源,但有时你无法避免,所以这个程序将解决问题。

答案 2 :(得分:4)

我找到了解决此问题的任何人的解决方案 将套接字目录更改为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

答案 3 :(得分:3)

我的解决方案是在硬关机的/ var / lib / mysql /目录中留下了mysql.sock。 Mysql认为它在没有运行时已经在运行。

答案 4 :(得分:2)

只需向操作系统供应商打开一个错误报告,要求他们将套接字放入/ var / run中,以便在重启时自动删除。在不干净的重启后保留此套接字是一个错误,/ var / run是这些类型文件的位置。

答案 5 :(得分:1)

为了自动清理.sock文件,在“start”代码块之后立即将这些行放在文件/etc/init.d/mysqld中

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,而且我们经常遇到电源故障。

问候。

答案 6 :(得分:1)

在OS重启期间MySQL服务没有正常关闭时,可能会出现这种情况。 已经保留了/var/lib/mysql/mysql.sock。这可以防止'mysqld'启动。

这些步骤可能有所帮助:

1:服务mysqld启动 killall -9 mysqld_safe mysqld 服务mysqld start

2:rm /var/lib/mysql/mysql.sock    服务mysqld start

答案 7 :(得分:0)

要启动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  ]

它可以帮助您解决问题。

答案 8 :(得分:0)

这只是因为mysql服务异常终止而发生的。删除或备份/var/lib/mysql/mysql.sock文件并重启mysql。

如果有任何问题,请告诉我..

答案 9 :(得分:-1)

我刚刚完成了这个问题,没有一个建议解决了我的问题。虽然我无法在启动时启动MySQL并在日志中找到相同的消息("另一个已经使用相同的unix套接字运行的MySQL守护程序"),当我到达控制台时,我能够启动服务

在我的配置文件中,我找到了以下行:bind-address=xx.x.x.x。我随机决定将其评论出来,并且启动时的错误消失了。因为绑定地址提供了安全性,所以在某种程度上,我决定进一步探索它。我使用的是机器的IP地址,而不是IPv4环回地址 - 127.0.0.1

简而言之,通过使用127.0.0.1作为bind-address,我能够解决此错误。我希望这可以帮助那些有这个问题,但无法使用上面详述的答案来解决它。