启动mysqld服务时出现奇怪的错误:
Another MySQL daemon already running with the same unix socket.
我试图列出正在运行的服务并停止它们,但启动mysqld服务时会发生同样的错误。
我可以尝试删除mysqld并重新安装它,但这也会删除数据库吗?
要防止出现此问题,必须从命令行正常关闭服务器,而不是关闭服务器电源。
#shutdown -h now
这将在关闭机器之前停止正在运行的服务。
基于Centos,当您遇到此问题时,再次备份它的另一种方法是移动mysql.sock:
# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
# service mysqld start
重新启动该服务会创建一个名为mysql.sock的新条目
我刚刚完成了这个问题,没有一个建议解决了我的问题。虽然我无法在启动时启动MySQL并在日志中找到相同的消息(“另一个MySQL守护程序已经使用相同的unix套接字运行”),但是当我到达控制台时,我能够启动服务。
在我的配置文件中,我找到了以下行:bind-address=xx.x.x.x
。我随机决定将其评论出来,并且启动时的错误消失了。因为绑定地址提供了安全性,所以在某种程度上,我决定进一步探索它。我使用的是机器的IP地址,而不是IPv4环回地址 - 127.0.0.1
。
简而言之,通过使用127.0.0.1
作为bind-address
,我能够解决这个错误。我希望这可以帮助那些有这个问题,但无法使用上面详述的答案来解决它。
以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
文件,所以你必须自己做。当然也建议避免关闭系统电源,但有时你无法避免它,所以这个程序将解决问题。
我找到了解决此问题的任何人的解决方案将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
我对此的解决方案是在硬关闭的/ var / lib / mysql /目录中留下了mysql.sock。 Mysql认为它没有运行时已经运行了。
只需向操作系统供应商打开一个错误报告,要求他们将套接字放入/ var / run中,以便在重启时自动删除。在不干净的重启后保留此套接字是一个错误,/ var / run是这些类型文件的位置。
为了自动清理.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,而且我们经常遇到电源故障。
问候。
当操作系统重启期间MySQL服务没有正常关闭时,有时可能会出现这种情况。已经保留了/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服务的异常终止而发生。删除或备份/var/lib/mysql/mysql.sock文件并重启mysql。
如果有任何问题,请告诉我..