MySQL守护程序锁定问题

时间:2016-01-22 19:28:13

标签: mysql sockets debian

昨晚,我的MySQL服务器意外停机。在尝试重新启动时(使用service mysql restart - 我是root)它只是挂起。使用mysql -u root -p命令,我得到ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)。然后我尝试手动启动守护进程(mysqld)。提示将挂起约2秒钟,然后返回。仔细检查错误日志后,我得到了:

2016-01-22T19:18:32.399584Z 0 [ERROR] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.

2016-01-22T19:18:32.399622Z 0 [ERROR] Unable to setup unix socket lock file.

2016-01-22T19:18:32.399646Z 0 [ERROR] Aborting

然后我尝试了chown mysql /var/run/mysqldchmod -R 775 /var/run/mysqldapt-get install mysql-community-server --reinstall。没有运气。

我环顾四周,找不到解决方案。这里有什么帮助吗?

注意:我正在使用MySQL社区Server 5.7.10运行Debian 8(Jessie)

11 个答案:

答案 0 :(得分:42)

我刚碰到这个。 mysql安装有点奇怪而且丢失了 的/ var /运行/ mysqld的/

MySQLd试图创建套接字和锁定文件,但缺少父目录。我只是创建了目录

sudo mkdir /var/run/mysqld

将其归为mysql

sudo chown mysql:mysql /var/run/mysqld

然后我能够正常启动mysqld。

答案 1 :(得分:6)

我今天在Ubuntu服务器上遇到了同样的问题。但我认为解决方案不是禁用锁定。在我的情况下,查看系统日志(dmesg | tailjournalctl -xe)会发现它是一个apparmor问题,可以找到解决方案in this question

答案 2 :(得分:2)

我遇到以下错误

[ERROR] Unix socket lock file is empty /var/lib/mysql/mysql.sock.lock.

由于我的服务器缺少100%使用空间(请参见下文)而出现此错误

Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/xvda1      41153856 28531384  12187364  100% /

确保文件夹存在并具有适当的权限

chown mysql:mysql /var/lib/mysql/

并确保删除该文件,以便mysql服务器可以生成一个新文件。

rm /var/lib/mysql/mysql.sock.lock

答案 3 :(得分:0)

可能还没有磁盘空间。

答案 4 :(得分:0)

以下命令对我有用。

sudo mkdir /var/run/mysqld

sudo chmod 777 /var/run/mysqld -R

答案 5 :(得分:0)

如果您使用docker运行MySQL,请检查docker偏好设置中是否有足够的已分配磁盘空间。

答案 6 :(得分:0)

发布此答案,以防其他人使用与我相同的配置。我对此配置有类似的问题:

主机操作系统:someDataSendOperation,MySql服务器:Ubuntu 20.04

运行8.0时在/var/log/mysql/error.log中看到以下错误

systemctl start mysql

修复类似:

[ERROR] [MY-010273] [Server] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.

当然,无论在哪里安装mysql服务器,我都有足够的空间。

答案 7 :(得分:0)

在尝试任何更通用的答案之前,最好先查看日志文件(/ usr / local / var / mysql / *。local.err)。


在我的情况下,它首先抱怨无法打开套接字文件([Server] Could not open unix socket lock file /tmp/mysql.sock.lock.),而一旦我更改了权限,它抱怨无法删除它! ([Server] Could not remove unix socket lock file /tmp/mysql.sock.lock errno 13.

将其删除并运行mysql.server start并完成。

答案 8 :(得分:0)

对于那些运行 docker 的人。如果你已经在 docker 中运行 mysql,你也会得到这样的错误。删除mysql容器为我解决了问题。

答案 9 :(得分:-1)

将/var/lib/mysql/mysql.sock.lock和/var/lib/mysql/mysql.sock重命名为/var/lib/mysql/mysql.sock.lock.bck和/ var / lib / mysql /分别使用mysql.sock.bck和mysqld启动。有效

答案 10 :(得分:-3)

固定。将skip-external-locking添加到my.cnf部分下的[mysqld],然后重新启动整个系统。这应该解决它,任何人发现这一点。此外,如果您备份了数据,然后尝试恢复并被告知rm ib*使其正常工作,则需要ibdata文件。