启动mysqld服务时出现一个奇怪的错误:
Another MySQL daemon already running with the same unix socket.
我尝试列出正在运行的服务并停止它们,但启动mysqld服务时会发生同样的错误。
我可以尝试删除mysqld并重新安装它,但是这也会删除数据库吗?
答案 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)
以root身份运行,您将全部设置:
rm $(grep socket /etc/my.cnf | cut -d= -f2) && service mysqld start
你可以通过在/etc/my.conf
中手动浏览,或者只是使用
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
,我能够解决此错误。我希望这可以帮助那些有这个问题,但无法使用上面详述的答案来解决它。