CentOS 7下MySQL服务启动失败的快速解决方法
今天,启动MySQL服务器失败,如下所示:
[root@spark01~]#/etc/init.d/mysqldstart Startingmysqld(viasystemctl):Jobformysqld.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemctlstatusmysqld.service"and"journalctl-xe"fordetails. [FAILED]
根据提示,分别使用systemctlstatusmysqld.service和journalctl-xe查看服务启动失败的原因
[root@spark01~]#systemctlstatusmysqld.service
?.mysqld.service-SYSV:MySQLdatabaseserver. Loaded:loaded(/etc/rc.d/init.d/mysqld) Active:failed(Result:exit-code)sinceWed2016-01-2018:26:57CST;40sago Docs:man:systemd-sysv-generator(8) Process:2979ExecStart=/etc/rc.d/init.d/mysqldstart(code=exited,status=1/FAILURE) Jan2018:26:56spark01systemd[1]:StartingSYSV:MySQLdatabaseserver.... Jan2018:26:57spark01mysqld[2979]:MySQLDaemonfailedtostart. Jan2018:26:57spark01mysqld[2979]:Startingmysqld:[FAILED] Jan2018:26:57spark01systemd[1]:mysqld.service:controlprocessexited,code=exitedstatus=1 Jan2018:26:57spark01systemd[1]:FailedtostartSYSV:MySQLdatabaseserver.. Jan2018:26:57spark01systemd[1]:Unitmysqld.serviceenteredfailedstate. Jan2018:26:57spark01systemd[1]:mysqld.servicefailed.
[root@spark01~]#journalctl-xe
-- --Unitsession-2.scopehasbegunstartingup. Jan2018:26:48spark01sshd[2916]:pam_unix(sshd:session):sessionopenedforusersparkby(uid=0) Jan2018:26:52spark01su[2944]:(toroot)sparkonpts/1 Jan2018:26:52spark01su[2944]:pam_unix(su-l:session):sessionopenedforuserrootbyspark(uid=1000) Jan2018:26:56spark01polkitd[909]:RegisteredAuthenticationAgentforunix-process:2974:117137(systembusname:1.25 Jan2018:26:56spark01systemd[1]:StartingSYSV:MySQLdatabaseserver.... --Subject:Unitmysqld.servicehasbegunstart-up --Defined-By:systemd --Support:http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- --Unitmysqld.servicehasbegunstartingup. Jan2018:26:57spark01mysqld[2979]:MySQLDaemonfailedtostart. Jan2018:26:57spark01mysqld[2979]:Startingmysqld:[FAILED] Jan2018:26:57spark01systemd[1]:mysqld.service:controlprocessexited,code=exitedstatus=1 Jan2018:26:57spark01systemd[1]:FailedtostartSYSV:MySQLdatabaseserver.. --Subject:Unitmysqld.servicehasfailed --Defined-By:systemd --Support:http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- --Unitmysqld.servicehasfailed. -- --Theresultisfailed. Jan2018:26:57spark01systemd[1]:Unitmysqld.serviceenteredfailedstate. Jan2018:26:57spark01systemd[1]:mysqld.servicefailed. Jan2018:26:57spark01polkitd[909]:UnregisteredAuthenticationAgentforunix-process:2974:117137(systembusname:1.
但,可惜的时,这些信息并不能提供服务启动失败的真正原因。
这时候,不妨打开MySQL的告警日志,毕竟,只要MySQL服务启动,告警日志都会有输出信息的,果然
2016-01-20T10:00:19.935771Z0[ERROR]/usr/sbin/mysqld:Can'tcreate/writetofile'/var/run/mysqld/mysqld.pid'(Errcode:2-Nosuchfileordirectory) 2016-01-20T10:00:19.935795Z0[ERROR]Can'tstartserver:can'tcreatePIDfile:Nosuchfileordirectory 16012018:00:20mysqld_safemysqldfrompidfile/var/run/mysqld/mysqld.pidended
MySQL服务在启动的时候,不能创建pid文件。
在终端看一下该目录是否存在,果然,不存在。
于是,创建了/var/run/mysqld/目录,重启MySQL服务
[root@spark01~]#mkdir-p/var/run/mysqld/
[root@spark01~]#/etc/init.d/mysqldstart
Startingmysqld(viasystemctl):Jobformysqld.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemctlstatusmysqld.service"and"journalctl-xe"fordetails. [FAILED]
依旧报错,重新查看告警日志,有以下输出
2016-01-20T10:28:37.183387Z0[ERROR]/usr/sbin/mysqld:Can'tcreate/writetofile'/var/run/mysqld/mysqld.pid'(Errcode:13-Permissiondenied) 2016-01-20T10:28:37.183431Z0[ERROR]Can'tstartserver:can'tcreatePIDfile:Permissiondenied 16012018:28:37mysqld_safemysqldfrompidfile/var/run/mysqld/mysqld.pidended 16012018:32:06mysqld_safeStartingmysqlddaemonwithdatabasesfrom/var/lib/mysql
原来,/var/run/mysqld/的属主和属组还是root,mysql并不能在其中创建文件,后修改该目录的属主和属组,启动OK。
[root@spark01~]#ls-ld/var/run/mysqld/ drwxr-xr-x2rootroot40Jan2018:28/var/run/mysqld/ [root@spark01~]#chownmysql.mysql/var/run/mysqld/ [root@spark01~]#/etc/init.d/mysqldstart Startingmysqld(viasystemctl):[OK]
总结:
以前在玩Kubernetes的时候,常遇到启动失败的情况,根据systemctl的提示,通过systemctlstatusmysqld.service和journalctl-xe命令查看服务启动失败的原因往往并不如人意,反而给了一种错误的暗示,以为这个跟系统有关。其实,通过查看服务的日志,往往更能清晰的知道服务启动失败的原因。
以上这篇CentOS7下MySQL服务启动失败的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。