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
一切問題迎刃而解