启动mysql报错:
[root@localhost ~]# systemctl start mysqld Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
以下三种查看报错信息方式:
1. systemctl status mysqld.service
[root@localhost ~]# systemctl status mysqld.service ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: failed (Result: start-limit) since 六 2020-03-14 03:55:06 CST; 14s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 73992 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE) Process: 73975 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 72217 (code=exited, status=0/SUCCESS) 3月 14 03:55:06 localhost.localdomain systemd[1]: Failed to start MySQL Server. 3月 14 03:55:06 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state. 3月 14 03:55:06 localhost.localdomain systemd[1]: mysqld.service failed. 3月 14 03:55:06 localhost.localdomain systemd[1]: mysqld.service holdoff time over, scheduling restart. 3月 14 03:55:06 localhost.localdomain systemd[1]: Stopped MySQL Server. 3月 14 03:55:06 localhost.localdomain systemd[1]: start request repeated too quickly for mysqld.service 3月 14 03:55:06 localhost.localdomain systemd[1]: Failed to start MySQL Server. 3月 14 03:55:06 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state. 3月 14 03:55:06 localhost.localdomain systemd[1]: mysqld.service failed.
2. journalctl -xe
[root@localhost ~]# journalctl -xe -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysqld.service has failed. -- -- The result is failed. 3月 14 03:55:04 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state. 3月 14 03:55:04 localhost.localdomain systemd[1]: mysqld.service failed. 3月 14 03:55:05 localhost.localdomain systemd[1]: mysqld.service holdoff time over, scheduling restart. 3月 14 03:55:05 localhost.localdomain systemd[1]: Stopped MySQL Server. -- Subject: Unit mysqld.service has finished shutting down -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysqld.service has finished shutting down. 3月 14 03:55:05 localhost.localdomain systemd[1]: Starting MySQL 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. 3月 14 03:55:06 localhost.localdomain mysqld[73992]: Initialization of mysqld failed: 0 3月 14 03:55:06 localhost.localdomain systemd[1]: mysqld.service: control process exited, code=exited status=1 3月 14 03:55:06 localhost.localdomain systemd[1]: Failed to start MySQL 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. 3月 14 03:55:06 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state. 3月 14 03:55:06 localhost.localdomain systemd[1]: mysqld.service failed. 3月 14 03:55:06 localhost.localdomain systemd[1]: mysqld.service holdoff time over, scheduling restart. 3月 14 03:55:06 localhost.localdomain systemd[1]: Stopped MySQL Server. -- Subject: Unit mysqld.service has finished shutting down -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit mysqld.service has finished shutting down. 3月 14 03:55:06 localhost.localdomain systemd[1]: start request repeated too quickly for mysqld.service 3月 14 03:55:06 localhost.localdomain systemd[1]: Failed to start MySQL 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. 3月 14 03:55:06 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state. 3月 14 03:55:06 localhost.localdomain systemd[1]: mysqld.service failed.
3.查看日志(推荐):
[root@localhost ~]# cat /var/log/mysqld.log ... 2020-03-13T18:53:16.099273Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation. 2020-03-13T18:53:16.099347Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory. 2020-03-13T18:53:16.099357Z 0 [ERROR] InnoDB: os_file_get_status() failed on './ibdata1'. Can't determine file permissions 2020-03-13T18:53:16.099369Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error 2020-03-13T18:53:16.718886Z 0 [ERROR] Plugin 'InnoDB' init function returned error. 2020-03-13T18:53:16.718953Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 2020-03-13T18:53:16.718962Z 0 [ERROR] Failed to initialize builtin plugins. 2020-03-13T18:53:16.718966Z 0 [ERROR] Aborting
排错:
查看日志后可以看到日志中的ERROR信息,不懂的地方可以翻译一下,方便理解,寻找有用的信息。
[ERROR] InnoDB: Operating system error number 13 in a file operation. [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory. [ERROR] InnoDB: os_file_get_status() failed on './ibdata1'. Can't determine file permissions [ERROR] InnoDB: Plugin initialization aborted with error Generic error [ERROR] Plugin 'InnoDB' init function returned error. [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. [ERROR] Failed to initialize builtin plugins. [ERROR] Aborting ↓↓↓↓↓↓ [错误] InnoDB:文件操作中的操作系统错误号13。 [错误] InnoDB:该错误意味着mysqld没有访问该目录的权限。 [错误] InnoDB: os_file_get_status()在上失败。/ibdata1。无法确定文件权限 [错误] InnoDB:插件初始化中止,出现错误一般错误 [错误]插件“InnoDB”初始化函数返回错误。 [错误]插件“InnoDB”注册为存储引擎失败。 [错误]初始化内置插件失败。 [错误]中止
解决方案:
[root@localhost ~]# getenforce //查看selinux状态 Enforcing [root@localhost ~]# setenforce 0 //临时关闭selinux,重启后失效 [root@localhost ~]# getenforce Permissive [root@localhost ~]# systemctl start mysqld //启动mysql服务成功 [root@localhost ~]# ss -antulp | grep :3306 tcp LISTEN 0 80 [::]:3306 [::]:* users:(("mysqld",pid=74057,fd=17))
永久关闭selinux
[root@localhost ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
备份配置文件
[root@localhost ~]# cp -r /etc/selinux/config /etc/selinux/config.bak [root@localhost ~]# sed -i 's/SELINUX=enforcing/\SELINUX=disabled/' /etc/selinux/config [root@localhost ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted