MySQL啓動故障解決

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

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).

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

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

發如今目錄判斷的時候會失效shell

 

實際上這個目錄是存在的,查看啓動失敗的日誌oracle

也是權限問題,但目錄權限正確,因此可能的問題就出在啓動mysql_safe腳本的時候致使某些問題的出現ui

換用如下方式啓動spa

[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直接關掉,臨時關掉的方式以下:code

[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 

相關文章
相關標籤/搜索