這時候,不妨打開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/的屬主和屬組還是root,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 ]
總結:
以前在玩Kubernetes的時候,常遇到啟動失敗的情況,根據systemctl的提示,通過systemctl status mysqld.service和journalctl -xe命令查看服務啟動失敗的原因往往并不如人意,反而給了一種錯誤的暗示,以為這個跟系統有關。其實,通過查看服務的日志,往往更能清晰的知道服務啟動失敗的原因
posted on 2018-05-10 15:23
長春語林科技 閱讀(197)
評論(0) 編輯 收藏 所屬分類:
mysql