MySQL啟動故障解決


今天在啟動mysql的時候,使用/etc/init.d/mysqld start 報錯

Starting MySQL (Percona Server).mkdir: cannot create directory `/var/lib/mysql': File exists
chown: cannot access `/var/lib/mysql': Permission denied
chmod: cannot access `/var/lib/mysql': Permission denied
rm: cannot remove `/var/lib/mysql/mysql.sock': Permission denied
 ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).

一看這種是權限問題,但查看發現目錄權限已經是對的

查看啟動腳本,是啟動的時候調用/usr/bin/mysqld_safe啟動進程,兩個都是shell腳本,改用調試模式執行

發現在目錄判斷的時候會失效

 

實際上這個目錄是存在的,查看啟動失敗的日志

也是權限問題,但目錄權限正確,所以可能的問題就出在啟動mysql_safe腳本的時候導致某些問題的出現

換用以下方式啟動

[shell#] sh /etc/init.d/mysqld start 

發現啟動成功,這種情況相當於直接以root用戶啟動,

查看日志/var/log/audit/audit.log 發現發現時selinux限制了mysql啟動時對數據目錄的chown 

type=AVC msg=audit(1492495884.134:8627): avc:  denied  { getattr } for  pid=11695 comm="chown" path="/var/lib/mysql" dev=dm-0 ino=392235 scontext=unconfined_u:system_r:mysqld_safe_t:s0 tcont
ext=unconfined_u:object_r:var_lib_t:s0 tclass=lnk_file

因為這里我們用不上selinux直接關掉,臨時關掉的方式如下:

[shell#] setenforce 0

永久關掉需要修改 /etc/selinux/config 再重啟機器就好

SELINUX=disabled

也可以打開相關目錄的權限

[shell#]chcon -R -t mysqld_db_t  dir

再啟動便不會報錯

附:

關於selinux與mysql相關的一些問題可查看 https://blogs.oracle.com/jsmyth/entry/selinux_and_mysql 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM