在 Linux 上自建 MySQL 服务器,经常遇到各种无法启动或启动后异常的问题,本文列举一些常见问题的解决办法。
注意:以下错误日志提示,都是查看 MySQL 错误日志得到,查看方法如下:
查看下 MySQL 配置文件 my.cnf 中有记录,日志记录在 /alidata/log/mysql/error.log 下
![3b3bd9bf1af93abb77a90007ea4ca084.png](https://img-blog.csdnimg.cn/img_convert/3b3bd9bf1af93abb77a90007ea4ca084.png)
MySQL 配置文件 my.cnf 权限问题导致无法启动,错误提示:World-writable config file '/etc/my.cnf' is ignored
Binlog 丢失导致无法启动,错误日志: File './mysql-bin.000001' not found
Binlog 无法读取导致无法启动,错误日志:Failed to open log (file './mysql-bin.000001', errno 13)
不能创建 PID 导致无法启动,错误日志:Can't start server: can't create PID file: No such file or directory
不能创建临时文件导致无法启动,错误日志:mysqld: Can't create/write to file '/tmp/ibfguTtC' (Errcode: 13)
MySQL 服务无法识别导致无法启动,错误提示:mysqld: unrecognized service
MySQL 配置了过大的内存导致无法启动,错误日志:InnoDB: Cannot allocate memory for the buffer pool
MySQL 启动参数过多导致无法启动,错误提示:Too many arguments (first extra is 'start')
MySQL 目录权限问题导致无法启动,错误日志:File './mysql-bin.index' not found (Errcode:13 - Permission denied)
MySQL 未初始化导致无法启动,错误提示:can't open the mysql.plugin table
MySQL 启动成功但未监听端口
MySQL ibdata1权限问题导致无法启动,错误日志:InnoDB Operating system error number 13 in a file operation
磁盘空间满导致 MySQL 无法启动
进程残留导致 MySQL 无法启动
MySQL 服务自动停止
MySQL 配置文件 my.cnf 权限问题导致无法启动,错误提示:World-writable config file '/etc/my.cnf' is ignored
问题描述
主机 Linux MySQL 无法启动,报如下错误:
![bfa98651771dc0ca4d79493d4ddb57b7.png](https://img-blog.csdnimg.cn/img_convert/bfa98651771dc0ca4d79493d4ddb57b7.png)
问题分析
查看 MySQL 错误日志发现如下错误(提示 MySQL 库的 host 表无法打开):
![ccb49e8d8ab204ba4fd7880d20b224d5.png](https://img-blog.csdnimg.cn/img_convert/ccb49e8d8ab204ba4fd7880d20b224d5.png)
查看 /etc/my.cnf 配置文件:
![d230757c06df1a847209939b6cc8d80e.png](https://img-blog.csdnimg.cn/img_convert/d230757c06df1a847209939b6cc8d80e.png)
到 MySQL 数据库所在目录查看表是否存在:
![20528814504ef5c44f18e3cdfb55981c.png](https://img-blog.csdnimg.cn/img_convert/20528814504ef5c44f18e3cdfb55981c.png)
发现 MySQL 库的 host 表是存在的,那为什么会提示不存在呢?
问题应该出在 /etc/my.cnf 文件上,从第一个截图也可以看到警告信息(/etc/my.cnf 被忽视)
查看文件权限:
![3eca3d86a221b9cdd00f01046da6b22e.png](https://img-blog.csdnimg.cn/img_convert/3eca3d86a221b9cdd00f01046da6b22e.png)
原来文件权限被设置成 777,因安全问题导致被 MySQL 忽视,所以去查询默认的数据库存放路径,没有 MySQL 库的 host 表导致启动失败:
![3b061dd5c1ea5bea9683d00b0aa8ca74.png](https://img-blog.csdnimg.cn/img_convert/3b061dd5c1ea5bea9683d00b0aa8ca74.png)
解决办法
将 /etc/my.cnf 权限修改成 644,然后启动 MySQL 即可:
![13e1405a9888de211cb6c47fbe025cad.png](https://img-blog.csdnimg.cn/img_convert/13e1405a9888de211cb6c47fbe025cad.png)
Binlog 丢失导致无法启动,错误日志: File './mysql-bin.000001' not found
问题描述
清理磁盘空间时删除了全部 binglog 日志,导致 MySQL 无法启动:
![b0c47dad63bb3c4775e792d44506de07.png](https://img-blog.csdnimg.cn/img_convert/b0c47dad63bb3c4775e792d44506de07.png)
MySQL 的 errorlog 里面可以看到错误信息:
![1aa02f3d5fca9f25cdb5cbbbde8534e3.png](https://img-blog.csdnimg.cn/img_convert/1aa02f3d5fca9f25cdb5cbbbde8534e3.png)
解决办法
1、注释 Binlog 配置恢复方法:
编辑 /etc/my.cnf,找到 log-bin=mysql-bin,在前面加#将其注释暂时关闭 binlog,保存修改后启动 MySQL 服务
注意:my.cnf 配置文件路径以实际调用路径为准