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
一切问题迎刃而解