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/ 여전히 루트이므로 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 ]
요약:
쿠버네티스를 사용하다 보면, systemctl 프롬프트에 따라 서비스 시작 실패 이유를 systemctl status mysqld.service 및 Journalctl을 통해 자주 확인하곤 했습니다. -xe 명령이 만족스럽지 않지만 시스템과 관련된 것으로 생각하여 잘못된 힌트를 제공했습니다. 실제로 서비스 로그를 확인해보면 서비스 시작에 실패한 이유를 더 명확하게 알 수 있는 경우가 많다.
추천: "centos 사용 튜토리얼"
위 내용은 centos mysqld가 시작되지 않으면 어떻게 해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!