【发布时间】:2013-12-22 19:46:37
【问题描述】:
启动mysqld服务时出现奇怪的错误:
Another MySQL daemon already running with the same unix socket.
我尝试列出正在运行的服务并停止它们,但在启动 mysqld 服务时发生了同样的错误。
我可以尝试删除 mysqld 并重新安装,但这也会删除数据库吗?
【问题讨论】:
标签: mysql sockets unix centos6
启动mysqld服务时出现奇怪的错误:
Another MySQL daemon already running with the same unix socket.
我尝试列出正在运行的服务并停止它们,但在启动 mysqld 服务时发生了同样的错误。
我可以尝试删除 mysqld 并重新安装,但这也会删除数据库吗?
【问题讨论】:
标签: mysql sockets unix centos6
为防止问题发生,您必须从命令行正常关闭服务器,而不是关闭服务器。
# 立即关闭 -h
这将在关闭机器之前停止正在运行的服务。
基于 Centos,当你遇到这个问题时,另一种方法是移动 mysql.sock:
# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
# service mysqld start
重新启动服务会创建一个名为 mqsql.sock 的新条目
【讨论】:
# reboot 并没有解决问题。从未尝试过shutdown -h now
# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak 然后# shutdown -h now 应该会正常。
以 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 文件,所以你必须自己做。 (当然)也建议避免关闭系统电源,但有时您无法避免,因此此过程将解决问题。
【讨论】:
cut -d= -f2 位可能出现错误,因为您希望在 = 符号之后出现一个值,但 = 是传递给的值-d 选项:换句话说,= 用作cut 的分隔符。
/etc/my.cnf 替换为 /etc/mysql/my.cnf。
grep '^socket[[:space:]]=' /etc/my.cnf,否则您最终可能会删除您不想要的内容。
我已经找到解决这个问题的任何人的方法 将套接字目录更改为 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 文件,将这些行放在文件 /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 服务未正确关闭有时可能会出现。 /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。
如果有任何问题请告诉我..
【讨论】:
我刚刚解决了这个问题,但没有任何建议能解决我的问题。虽然我无法在启动时启动 MySQL,并且在日志中发现了相同的消息(“另一个 MySQL 守护程序已经在使用相同的 unix 套接字运行”),但我在到达控制台后就能够启动该服务。
在我的配置文件中,我找到了以下行:bind-address=xx.x.x.x。我随机决定将其注释掉,启动时的错误消失了。因为绑定地址提供了安全性,在某种程度上,我决定进一步探索它。我使用的是机器的 IP 地址,而不是 IPv4 环回地址 - 127.0.0.1。
简而言之,通过使用127.0.0.1 作为bind-address,我能够修复此错误。我希望这对那些遇到此问题但无法使用上述详细答案解决的人有所帮助。
【讨论】: