启动mysql,爆出错误:Job for mysqld.service failed because the control process exited with error code.

导读:本篇文章讲解 启动mysql,爆出错误:Job for mysqld.service failed because the control process exited with error code.,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

问题

今天centos服务升级后,启动mysql爆出如下错误:

Job for mysqld.service failed because the control process exited with error code. 

See "systemctl status mysqld.service" and "journalctl -xe" for details.

分析问题

查看服务启动状态

使用指令systemctl status mysqld查看mysql是否启动成功:

在这里插入图片描述

inactive (dead)表示启动失败。

分析失败的原因

输入指令journalctl -xe查看

-- Unit session-2.scope has begun starting up.

Jan 20 18:26:48 spark01 sshd[2916]: pam_unix(sshd:session): session opened for user spark by (uid=0)

Jan 20 18:26:52 spark01 su[2944]: (to root) spark on pts/1

Jan 20 18:26:52 spark01 su[2944]: pam_unix(su-l:session): session opened for user root by spark(uid=1000)

Jan 20 18:26:56 spark01 polkitd[909]: Registered Authentication Agent for unix-process:2974:117137 (system bus name :1.25

Jan 20 18:26:56 spark01 systemd[1]: Starting SYSV: MySQL database server....

-- Subject: Unit mysqld.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- Unit mysqld.service has begun starting up.

Jan 20 18:26:57 spark01 mysqld[2979]: MySQL Daemon failed to start.

Jan 20 18:26:57 spark01 mysqld[2979]: Starting mysqld:  [FAILED]

Jan 20 18:26:57 spark01 systemd[1]: mysqld.service: control process exited, code=exited status=1

Jan 20 18:26:57 spark01 systemd[1]: Failed to start SYSV: MySQL database server..

-- Subject: Unit mysqld.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysqld.service has failed.
-- 
-- The result is failed.

Jan 20 18:26:57 spark01 systemd[1]: Unit mysqld.service entered failed state.

Jan 20 18:26:57 spark01 systemd[1]: mysqld.service failed.

Jan 20 18:26:57 spark01 polkitd[909]: Unregistered Authentication Agent for unix-process:2974:117137 (system bus name :1.

然而,这些信息并不能提供服务启动失败的真正原因。

这时候,不妨打开MySQL的告警日志,毕竟,只要MySQL服务启动,告警日志都会有输出信息的,果然:


2016-01-20T10:00:19.935771Z 0 [ERROR] /usr/sbin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2 - No such file or directory)

2016-01-20T10:00:19.935795Z 0 [ERROR] Can't start server: can't create PID file: No such file or directory

160120 18:00:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

MySQL服务在启动的时候,并不存在/var/run/mysqld/目录,因为/var/run/mysqld/的属主和属组属于root,自然无法创建mysqld.pid文件。

因为mysql并不能在其中创建文件,所以,我们需要执行如下指令去创建目录和启动mysql

解决问题

  1. 创建目录
mkdir -p /var/run/mysqld/
  1. 刷新权限
chown mysql.mysql /var/run/mysqld/
  1. 查看目录
ls -ld /var/run/mysqld/
  1. 启动mysql
systemctl start mysqld
  1. 查看启动状态
systemctl status mysqld

在这里插入图片描述
发现,此时启动成功了。

总结

根据systemctl的提示,通过systemctl status mysqld.servicejournalctl -xe命令查看服务启动失败的原因往往并不如人意,反而给了一种错误的暗示,以为这个跟系统有关。其实,通过查看服务的日志,往往更能清晰的知道服务启动失败的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99210.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!