如何解决InnoDB: Unable to lock ./ibdata1 mysql错误?

23
2016-03-14 02:30:29 58150 [错误] InnoDB:无法锁定./ibdata1,错误:35 2016-03-14 02:30:29 58150 [注意] InnoDB:检查是否已经有另一个mysqld进程使用相同的InnoDB数据或日志文件。

6
你检查过是否有其他的mysqld进程了吗?听起来你已经在运行守护程序了。 - Isaac Bennetch
4个回答

76

首先,使用ps命令列出MySQL进程:

ps aux | grep mysql

输入图像描述

然后杀死进程

sudo kill 56311

3
信不信由你,解决方案在别处。问题显然源于AppArmor配置不当。
因此只需执行以下操作:
$ apt install apparmor-profiles

然后重启MySQL(注意它将会多快地重新启动)。

我在执行以下命令时发现与AppArmor相关的文件丢失:

$ systemctl status mysql.service

看这里。


这解决了问题,顺便提一下,如果有人遇到同样的问题; 在mysql启动时,apparmor错误会在syslog上报告。错误看起来像这样:audit: type=1400 audit(1490314801.743:24): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/mysqld" pid=21133 comm="apparmor_parser" - Chepech

2

它应该说:“还有另一种解决方案:问题可能是AppArmor”。如果您在/var/log/apport.log中没有看到条目,则很可能AppArmor不是问题所在。

然而,这是一个有趣的解决方案。


1
很棒的答案,澄清了其他两个答案的背景。建议不要以“我猜”的方式开始回答,你要么知道,要么不发表答案LOL https://stackoverflow.com/help/how-to-answer ... 可能将另一个答案或一些支持你所说的文档链接起来会更好,但仍然为这个答案+1,因为它帮助了我。 - JimLohse

0

我曾经遇到过类似的问题,那是因为AppArmor配置错误了。 数据目录应该是"rwk",而我配置成了"rw"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接