问题描述:
在使用MySQL时,可能会遇到“mysql is not running but lock exists”的错误提示。这种情况下无法启动MySQL服务。
解决方法:
在终端中输入命令:
ps -ef | grep mysql
如果存在类似以下输出结果,则表示MySQL进程正在运行中:
mysql 8880 1 0 21:32 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/myapp.pid
mysql 9121 8880 0 21:32 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/myapp.err --pid-file=/var/lib/mysql/myapp.pid --socket=/var/lib/mysql/mysql.sock
如果没有显示任何结果,表示该服务未启动。
在MySQL守护进程未正常退出而导致MySQL持有.lock文件的情况下,可以通过删除该文件,来解决启动MySQL失败的问题:
sudo rm /var/lib/mysql/*.lock
执行以下命令重启MySQL服务:
sudo systemctl restart mysqld
也可以尝试使用以下命令来启动MySQL服务:
sudo mysqld_safe --skip-grant-tables &
如果以上方法都无法解决问题,则可以考虑调整MySQL的配置文件my.cnf:
sudo vim /etc/my.cnf
在该文件中加入以下内容:
[mysqld]
innodb_force_recovery = 1
保存后重启MySQL服务。
示例说明:
示例1:
在运行MySQL服务时,提示“mysql is not running but lock exists”的错误。经过上述步骤,发现是由于MySQL守护进程异常,导致MySQL持有了.lock文件。通过删除该文件和重启MySQL服务,成功解决了问题。
示例2:
在进行MySQL备份时,由于备份进程异常导致MySQL服务异常退出。之后尝试启动MySQL服务时,提示“mysql is not running but lock exists”的错误。通过调整MySQL的配置文件my.cnf,将innodb_force_recovery参数设置为1,成功启动了MySQL服务,并修复了数据库文件的错误。
本文链接:http://task.lmcjl.com/news/18104.html