昨晚,我的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/mysqld
,chmod -R 775 /var/run/mysqld
和apt-get install mysql-community-server --reinstall
。没有运气。
我环顾四周,找不到解决方案。这里有什么帮助吗?
注意:我正在使用MySQL社区Server 5.7.10运行Debian 8(Jessie)
答案 0 :(得分:42)
我刚碰到这个。 mysql安装有点奇怪而且丢失了 的/ var /运行/ mysqld的/
MySQLd试图创建套接字和锁定文件,但缺少父目录。我只是创建了目录
sudo mkdir /var/run/mysqld
将其归为mysql
sudo chown mysql:mysql /var/run/mysqld
然后我能够正常启动mysqld。
答案 1 :(得分:6)
我今天在Ubuntu服务器上遇到了同样的问题。但我认为解决方案不是禁用锁定。在我的情况下,查看系统日志(dmesg | tail
和journalctl -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
文件。