前段时间打包了一个数据库镜像,但是启动容器之后发现报错 ··· ···

MySQL: Starting MySQL….. ERROR! The server quit without updating PID file

查了网络上的解决方案比较全,遂转帖记录下。

因为镜像打包之前是做过主从的,所以此次把数据目录 /data 下的 mysql_MS.index 文件重命名,然后重新启动生成就好了。

-rw-rw---- 1 mysql mysql       36 Dec 16 01:43 mysql_MS.index
-rw-rw---- 1 mysql mysql      126 Dec 16 01:35 mysql_MS.index.bak

发生这种情况可能的原因有多种,具体什么原因最好的办法是先查看下错误日志:

1、可能是 /usr/local/mysql/data/mysql.pid 文件没有写的权限
解决方法 :给予权限,执行  “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data”  然后重新启动 mysqld!

2、可能进程里已经存在 mysql 进程
解决方法:用命令 “ps -ef|grep mysqld” 查看是否有 mysqld 进程,如果有使用 “kill -9  进程号” 杀死,然后重新启动mysqld!

3、可能是第二次在机器上安装 mysql,有残余数据影响了服务的启动。
解决方法:去 mysql 的数据目录 /data 看看,如果存在 mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。

4、mysql 在启动时没有指定配置文件时会使用 /etc/my.cnf 配置文件,请打开这个文件查看在 [mysqld] 节下有没有指定数据目录 (datadir)。
解决方法:请在 [mysqld] 下设置这一行:datadir = /usr/local/mysql/data

5、skip-federated 字段问题
解决方法:检查一下 /etc/my.cnf 文件中有没有没被注释掉的 skip-federated 字段,如果有就立即注释掉吧。

6、错误日志目录不存在
解决方法:使用 “chown” “chmod” 命令赋予mysql所有者及权限

7、selinux 惹的祸,如果是 centos 系统,默认会开启 selinux
解决方法:关闭它,打开 /etc/selinux/config,把 SELINUX=enforcing 改为 SELINUX=disabled 后存盘退出重启机器试试。

参考资料

1. MySQL提示:The server quit without updating PID file问题的解决办法

12-16 10:31