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

问题描述 投票:76回答:10

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

Another MySQL daemon already running with the same unix socket.

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

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

mysql sockets unix centos6
10个回答
226
投票

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

#shutdown -h now

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

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

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

# service mysqld start

重新启动该服务会创建一个名为mysql.sock的新条目


-1
投票

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

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

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


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文件,所以你必须自己做。当然也建议避免关闭系统电源,但有时你无法避免它,所以这个程序将解决问题。


4
投票

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

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


2
投票

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


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

问候。


1
投票

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

这些步骤可能有所帮助

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

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


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  ]

它可以帮助您解决问题。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.