mysqld daemon start failed

CentOS 6.2,修改了mysql的數據路徑(在/etc/my.cnf文件中修改datadir=XXX)之後發現

mysqld啓動不了了

# /etc/init.d/mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]

查看mysqld的log文件

#less /var/log/mysqld.log
/usr/libexec/mysqld: Can't change dir to ‘XXX’ (Errcode: 13)

但是明明我已經配置好了路徑以及文件的權限,mysqld卻仍然不能啓動

網上Google了很久,終於找到一個解決辦法

mysql_install_db --user=mysql --ldata=/data/mysql

此命令運行時依然報錯,但是運行完之後mysqld能啓動並正常使用了

# /etc/init.d/mysqld start
Starting mysqld:                                           [OK]

具體原因不明,我猜想是SELinux的原因,因爲RHEL6中SELinux默認是啓用的
(當你新建文件的時候你會發現文件權限後面有個點,

$touch hello
$ls -l hello
total 0
-rw-r--r--. 1 sunkun bioinformatics 0 Jul 10 11:55 hello

這就表明SELinux啓用 )
--------------------------------------------------------------------------------------------------------------

當看到錯誤日誌裏面如下記錄:

mysqld started

[Warning] Can't create test file xxx.lower-test
 [Warning] Can't create test file xxx.lower-test
/usr/libexec/mysqld: Can't change dir to '/xxx' (Errcode: 13)

 [ERROR] Aborting

首先檢查數據目錄和日誌目錄的權限和所屬用戶,如果權限和所屬用戶都沒問題,那應該是SELINUX的權限限制了。

對你的數據目錄和日誌目錄執行如下命令:

#chcon -R -t mysqld_db_t /xxx

一切問題迎刃而解



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章