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.service
‚ó mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Thu 2019-11-21 13:08:39 CST; 16s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 2592 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE) Process: 2560 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 2592 (code=exited, status=1/FAILURE) Status: "Server startup in progress" Error: 13 (Permission denied) Nov 21 13:08:38 VM_0_16_centos systemd[1]: Starting MySQL Server... Nov 21 13:08:39 VM_0_16_centos systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE Nov 21 13:08:39 VM_0_16_centos systemd[1]: Failed to start MySQL Server. Nov 21 13:08:39 VM_0_16_centos systemd[1]: Unit mysqld.service entered failed state. Nov 21 13:08:39 VM_0_16_centos systemd[1]: mysqld.service failed.
这里我看到了关键信息Error: 13 (Permission denied)
,无权限?继续查看一下mysqld日志,因为不记得日志路径,所以确定一下:
$ find / -name mysqld.log /var/log/mysqld.log
查看日志:cat /var/log/mysqld.log
mysqld: File './binlog.index' not found (OS errno 13 - Permission denied) 2019-11-21T05:08:32.749994Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead. 2019-11-21T05:08:32.751186Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.17) starting as process 2528 2019-11-21T05:08:32.753249Z 0 [ERROR] [MY-010119] [Server] Aborting 2019-11-21T05:08:32.753432Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.17) MySQL Community Server - GPL.
在这里,我得到了更为具体的信息,mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)
,好吧,先追过去看一下这个binlog
。那么它的路径在哪呢?可以在etc/my.cnf
配置文件中的datadir=
中得到:
[root@VES mysql]# ls -l total 1852876 -rw-r----- 1 mysql mysql 56 Nov 28 2018 auto.cnf -rw-r----- 1 mysql mysql 1073743056 Nov 16 12:01 binlog.000704 -rw-r----- 1 mysql mysql 632852623 Nov 21 12:12 binlog.000705 -rw-r----- 1 mysql mysql 178 Nov 21 12:15 binlog.000706 -rw-r----- 1 root root 2844 Nov 21 13:01 binlog.000707 -rw-r----- 1 root root 199 Nov 21 13:01 binlog.000708 -rw-r----- 1 root root 178 Nov 21 13:01 binlog.000709 -rw-r----- 1 root root 96 Nov 21 13:01 binlog.index -rw------- 1 mysql mysql 1680 Nov 28 2018 file11 -rw-r--r-- 1 mysql mysql 1112 Nov 28 2018 came
结果很明显了,用户权限不一样,我们的mysqld用户组是mysql那么重新授权一下:
$ chgrp -R mysql /usr/local/mysql/data && chown -R mysql /usr/local/mysql/data
这时候再重启
[root@VES mysql]# service mysqld restart Redirecting to /bin/systemctl restart mysqld.service
解决。