centos mysqld啟動失敗的解決辦法:1、查看服務的日志;2、修改“/var/run/mysqld/”的屬主和屬組即可。
本文操作環境:CentOS 7系統、DELL G3電腦
centos mysqld啟動失敗怎么辦?
今天,啟動MySQL服務器失敗,如下所示:
[root@spark01?~]#?/etc/init.d/mysqld?start Starting?mysqld?(via?systemctl):??Job?for?mysqld.service?failed?because?the?control?process?exited?with?error?code.?See?"systemctl?status?mysqld.service"?and?"journalctl?-xe"?for?details. ???????????????????????????????????????????????????????????[FAILED]
根據提示,分別使用systemctl status mysqld.service和journalctl -xe查看服務啟動失敗的原因
[root@spark01?~]#?systemctl?status?mysqld.service
?.mysqld.service?-?SYSV:?MySQL?database?server. ???Loaded:?loaded?(/etc/rc.d/init.d/mysqld) ???Active:?failed?(Result:?exit-code)?since?Wed?2016-01-20?18:26:57?CST;?40s?ago ?????Docs:?man:systemd-sysv-generator(8) ??Process:?2979?ExecStart=/etc/rc.d/init.d/mysqld?start?(code=exited,?status=1/FAILURE) Jan?20?18:26:56?spark01?systemd[1]:?Starting?SYSV:?MySQL?database?server.... 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.. 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.
[root@spark01?~]#?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服務在啟動的時候,不能創建pid文件。
在終端看一下該目錄是否存在,果然,不存在。
于是,創建了/var/run/mysqld/目錄,重啟MySQL服務
[root@spark01?~]#?mkdir?-p?/var/run/mysqld/ [root@spark01?~]#?/etc/init.d/mysqld?start Starting?mysqld?(via?systemctl):??Job?for?mysqld.service?failed?because?the?control?process?exited?with?error?code.?See?"systemctl?status?mysqld.service"?and?"journalctl?-xe"?for?details. ???????????????????????????????????????????????????????????[FAILED]
依舊報錯,重新查看告警日志,有以下輸出
2016-01-20T10:28:37.183387Z?0?[ERROR]?/usr/sbin/mysqld:?Can't?create/write?to?file?'/var/run/mysqld/mysqld.pid'?(Errcode:?13?-?Permission?denied) 2016-01-20T10:28:37.183431Z?0?[ERROR]?Can't?start?server:?can't?create?PID?file:?Permission?denied 160120?18:28:37?mysqld_safe?mysqld?from?pid?file?/var/run/mysqld/mysqld.pid?ended 160120?18:32:06?mysqld_safe?Starting?mysqld?daemon?with?databases?from?/var/lib/mysql
原來,/var/run/mysqld/的屬主和屬組還是root,mysql并不能在其中創建文件,后修改該目錄的屬主和屬組,啟動OK。
[root@spark01?~]#?ls?-ld?/var/run/mysqld/ drwxr-xr-x?2?root?root?40?Jan?20?18:28?/var/run/mysqld/ [root@spark01?~]#?chown?mysql.mysql?/var/run/mysqld/ [root@spark01?~]#?/etc/init.d/mysqld?start Starting?mysqld?(via?systemctl):???????????????????????????[??OK??]
?
總結:
以前在玩Kubernetes的時候,常遇到啟動失敗的情況,根據systemctl的提示,通過systemctl status mysqld.service和journalctl -xe命令查看服務啟動失敗的原因往往并不如人意,反而給了一種錯誤的暗示,以為這個跟系統有關。其實,通過查看服務的日志,往往更能清晰的知道服務啟動失敗的原因。
推薦:《centos使用教程》
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦