MySQL服务启动异常:Failed to start MySQL Server. mysqld.service holdoff time over, scheduling restart.

MySQL服务启动异常

在这里插入图片描述

systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since 二 2023-07-18 20:15:00 CST; 2min 19s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 4357 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)
  Process: 4085 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)

7月 18 20:14:59 localhost.localdomain systemd[1]: Failed to start MySQL Server.
7月 18 20:14:59 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
7月 18 20:14:59 localhost.localdomain systemd[1]: mysqld.service failed.
7月 18 20:15:00 localhost.localdomain systemd[1]: mysqld.service holdoff time over, scheduling restart.
7月 18 20:15:00 localhost.localdomain systemd[1]: Stopped MySQL Server.
7月 18 20:15:00 localhost.localdomain systemd[1]: start request repeated too quickly for mysqld.service
7月 18 20:15:00 localhost.localdomain systemd[1]: Failed to start MySQL Server.
7月 18 20:15:00 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
7月 18 20:15:00 localhost.localdomain systemd[1]: mysqld.service failed.
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.

chown

chown是一个常用的Linux/Unix命令,用于改变文件或目录的所有者(owner)。它的主要作用是将文件或目录的所有权转移给指定的用户或用户组。

chown命令的语法如下:

chown [选项] 用户名:用户组 文件/目录
其中,常用的选项包括:

-R:递归地改变指定目录及其子目录下的文件和目录的所有权。
-c:只在执行改变所有权操作时显示提示信息。
-v:显示详细的操作信息。
使用chown命令,可以实现以下功能:

转移文件/目录的所有权:可以将文件/目录的所有者更改为其他用户。
chown 用户名 文件/目录
转移用户组所有权:可以将文件/目录的用户组更改为其他用户组。
chown :用户组 文件/目录
同时转移所有者和用户组所有权:可以将文件/目录的所有者和用户组同时更改为其他用户和用户组。
chown 用户名:用户组 文件/目录
递归改变文件/目录的所有权:通过添加 -R 选项,可以递归地改变指定目录及其子目录下的所有文件和目录的所有权。
chown -R 用户名:用户组 目录
chown命令常用于系统管理员或文件的所有者进行文件/目录的权限管理。它可以帮助确保合适的用户或用户组拥有适当的访问权限,并提高系统的安全性和可管理性。
使用chown授予目录里权限

chown mysql:mysql -R /var/lib/mysql
chown mysql -R /var/lib/mysql
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.
[root@localhost ~]# journalctl -xe
Then execute:
restorecon -v ‘/cdh/logs/mysqld.log’

                                                    Plugin catchall (17.1 confidence) suggests   
                                                  
                                                  If you believe that mysqld should be allowed append access on the mysqld.log file by default.
                                                  Then you should report this as a bug.
                                                  You can generate a local policy module to allow this access.
                                                  Do
                                                  allow this access for now by executing:
                                                  # ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld
                                                  # semodule -i my-mysqld.pp

7月 18 20:24:15 localhost.localdomain setroubleshoot[11170]: failed to retrieve rpm info for /cdh/logs/mysqld.log
7月 18 20:24:15 localhost.localdomain setroubleshoot[11170]: SELinux is preventing /usr/sbin/mysqld from append access on the file /cdh/logs/mysqld.log. For complete SELinux messages run: sealert -l 4f2a
7月 18 20:24:15 localhost.localdomain python[11170]: SELinux is preventing /usr/sbin/mysqld from append access on the file /cdh/logs/mysqld.log.

                                                  *****  Plugin catchall_labels (83.8 confidence) suggests   *******************
                                                  
                                                  If you want to allow mysqld to have append access on the mysqld.log file
                                                  Then you need to change the label on /cdh/logs/mysqld.log
                                                  Do
                                                  # semanage fcontext -a -t FILE_TYPE '/cdh/logs/mysqld.log'
                                                  where FILE_TYPE is one of the following: NetworkManager_log_t, NetworkManager_tmp_t, abrt_tmp_t, abrt_upload_watch_tmp_t, abrt_var_cache_t, abrt_var_
                                                  Then execute:
                                                  restorecon -v '/cdh/logs/mysqld.log'


​ ***** Plugin catchall (17.1 confidence) suggests **************************

                                                  If you believe that mysqld should be allowed append access on the mysqld.log file by default.
                                                  Then you should report this as a bug.
                                                  You can generate a local policy module to allow this access.
                                                  Do
                                                  allow this access for now by executing:
                                                  # ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld
                                                  # semodule -i my-mysqld.pp

lines 2190-2228/2228 (END)
Then execute:
restorecon -v ‘/cdh/logs/mysqld.log’

                                                  *****  Plugin catchall (17.1 confidence) suggests   **************************
                                                  
                                                  If you believe that mysqld should be allowed append access on the mysqld.log file by default.
                                                  Then you should report this as a bug.
                                                  You can generate a local policy module to allow this access.
                                                  Do
                                                  allow this access for now by executing:
                                                  # ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld
                                                  # semodule -i my-mysqld.pp

7月 18 20:24:15 localhost.localdomain setroubleshoot[11170]: failed to retrieve rpm info for /cdh/logs/mysqld.log
7月 18 20:24:15 localhost.localdomain setroubleshoot[11170]: SELinux is preventing /usr/sbin/mysqld from append access on the file /cdh/logs/mysqld.log. For complete SELinux messages run: sealert -l 4f2a4ed9-4
7月 18 20:24:15 localhost.localdomain python[11170]: SELinux is preventing /usr/sbin/mysqld from append access on the file /cdh/logs/mysqld.log.

                                                  *****  Plugin catchall_labels (83.8 confidence) suggests   *******************
                                                  
                                                  If you want to allow mysqld to have append access on the mysqld.log file
                                                  Then you need to change the label on /cdh/logs/mysqld.log
                                                  Do
                                                  # semanage fcontext -a -t FILE_TYPE '/cdh/logs/mysqld.log'
                                                  where FILE_TYPE is one of the following: NetworkManager_log_t, NetworkManager_tmp_t, abrt_tmp_t, abrt_upload_watch_tmp_t, abrt_var_cache_t, abrt_var_log_t,
                                                  Then execute:
                                                  restorecon -v '/cdh/logs/mysqld.log'


​ ***** Plugin catchall (17.1 confidence) suggests **************************

                                                  If you believe that mysqld should be allowed append access on the mysqld.log file by default.
                                                  Then you should report this as a bug.
                                                  You can generate a local policy module to allow this access.
                                                  Do
                                                  allow this access for now by executing:
                                                  # ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld
                                                  # semodule -i my-mysqld.pp

~
~
~
lines 2190-2228/2228 (END)
Then execute:
restorecon -v ‘/cdh/logs/mysqld.log’

                                                  *****  Plugin catchall (17.1 confidence) suggests   **************************
                                                  
                                                  If you believe that mysqld should be allowed append access on the mysqld.log file by default.
                                                  Then you should report this as a bug.
                                                  You can generate a local policy module to allow this access.
                                                  Do
                                                  allow this access for now by executing:
                                                  # ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld
                                                  # semodule -i my-mysqld.pp

7月 18 20:24:15 localhost.localdomain setroubleshoot[11170]: failed to retrieve rpm info for /cdh/logs/mysqld.log
7月 18 20:24:15 localhost.localdomain setroubleshoot[11170]: SELinux is preventing /usr/sbin/mysqld from append access on the file /cdh/logs/mysqld.log. For complete SELinux messages run: sealert -l 4f2a
7月 18 20:24:15 localhost.localdomain python[11170]: SELinux is preventing /usr/sbin/mysqld from append access on the file /cdh/logs/mysqld.log.

                                                  *****  Plugin catchall_labels (83.8 confidence) suggests   *******************
                                                  
                                                  If you want to allow mysqld to have append access on the mysqld.log file
                                                  Then you need to change the label on /cdh/logs/mysqld.log
                                                  Do
                                                  # semanage fcontext -a -t FILE_TYPE '/cdh/logs/mysqld.log'
                                                  where FILE_TYPE is one of the following: NetworkManager_log_t, NetworkManager_tmp_t, abrt_tmp_t, abrt_upload_watch_tmp_t, abrt_var_cache_t, abrt_var_
                                                  Then execute:
                                                  restorecon -v '/cdh/logs/mysqld.log'


​ ***** Plugin catchall (17.1 confidence) suggests **************************

                                                  If you believe that mysqld should be allowed append access on the mysqld.log file by default.
                                                  Then you should report this as a bug.
                                                  You can generate a local policy module to allow this access.
                                                  Do
                                                  allow this access for now by executing:
                                                  # ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld
                                                  # semodule -i my-mysqld.pp

重点错误信息:

7月 18 20:24:15 localhost.localdomain setroubleshoot[11170]: SELinux is preventing /usr/sbin/mysqld from append access on the file /cdh/logs/mysqld.log. For complete SELinux messages run: sealert -l 4f2a

SELinux(Security-Enhanced Linux)是一个安全增强的Linux安全模块,它提供了Linux系统级别的强制访问控制(MAC)机制。它的目标是通过附加强制访问控制机制,限制进程的权限,并提供更细粒度的访问控制来增强系统的安全性。

相对于传统的Linux访问控制方式(基于用户和权限的访问控制),SELinux引入了基于角色的访问控制和类型强制访问控制。它通过在内核中实施安全策略和访问规则来限制进程对资源的访问,并控制进程间的相互作用。

getenforce是一个用于查看SELinux当前状态的命令。它通常用于检查SELinux的执行模式,以确定SELinux是启用还是禁用,并获取其当前的执行级别。

getenforce

Enforcing

[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/'  /etc/selinux/config
[root@localhost ~]# getenforce

Permissive

[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# systemctl status mysqld

● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2023-07-18 20:26:07 CST; 5s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 13063 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 13036 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 13066 (mysqld)
Tasks: 30
CGroup: /system.slice/mysqld.service
└─13066 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

7月 18 20:26:06 localhost.localdomain systemd[1]: Starting MySQL Server…
7月 18 20:26:07 localhost.localdomain systemd[1]: Started MySQL Server.

猜你喜欢

转载自blog.csdn.net/programmer589/article/details/131796977