重启后mysql.service启动失败,请求故障排查与解决方法
解决MySQL(MariaDB)重启后启动失败的问题
先看看你提供的服务状态输出,已经明确是启动失败,退出状态1:
● mysql.service - LSB: 启动和停止mysql数据库服务器守护进程 已加载:已加载(/etc/init.d/mysql; 异常; 厂商预设: 启用) 活动状态:失败(结果:退出码),自2018年1月13日 周六 00:12:28 EST起;10分钟前 文档:man:systemd-sysv-generator(8) 进程:3463 ExecStart=/etc/init.d/mysql start(代码=已退出,状态=1/FAILURE) 1月13日 00:11:57 miguel systemd[1]: 正在启动LSB: 启动和停止mysql数据库服务器守护进程... 1月13日 00:11:58 miguel mysql[3463]: * 启动MariaDB数据库服务器mysqld 1月13日 00:12:28 miguel mysql[3463]: ...失败! 1月13日 00:12:28 miguel systemd[1]: mysql.service: 控制进程已退出,代码=已退出状态=1 1月13日 00:12:28 miguel systemd[1]: 启动LSB: 启动和停止mysql数据库服务器守护进程失败。 1月13日 00:12:28 miguel systemd[1]: mysql.service: 单元进入失败状态。 1月13日 00:12:28 miguel systemd[1]: mysql.service: 失败原因:'exit-code'。
这个状态只告诉我们启动失败,但没说具体原因,得从这几个方向排查:
- 查看错误日志:这是最关键的一步,MariaDB的错误日志一般在
/var/log/mysql/error.log或者/var/log/mariadb/mariadb.log,执行命令tail -n 50 /var/log/mysql/error.log,看看里面有没有具体的报错信息,比如表损坏、配置错误、权限问题等。 - 检查配置文件语法:有时候重启后配置文件被修改或者有语法错误,导致启动失败。可以用
mysqld --validate-config来检查my.cnf(通常在/etc/mysql/或者/etc/目录下)的语法是否正确,有错误会直接提示。 - 验证数据目录权限:MySQL的数据目录(默认是
/var/lib/mysql)的所有者必须是mysql用户和组,执行ls -ld /var/lib/mysql查看权限,如果不是,用chown -R mysql:mysql /var/lib/mysql来修复权限。 - 检查磁盘空间:如果磁盘满了,MariaDB也无法启动,执行
df -h查看系统磁盘使用情况,特别是数据目录所在的分区。 - 手动启动看详细输出:直接执行启动脚本并开启 verbose 模式,
/etc/init.d/mysql start --verbose,或者用mysqld_safe --verbose启动,这样能看到更详细的启动过程和错误信息,帮助定位问题。
先按这些步骤排查,一般都能找到具体的失败原因,然后针对性解决就行。
内容的提问来源于stack exchange,提问作者gab
相关产品推荐
相关产品推荐

