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启用 )
----- ---------------------------------------------------------------------------------------------------------
 

/usr/libexec/mysqld: Can't change dir to '/xxx' (Errcode: 13) 解决


当看到错误日志里面如下记录:

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

一切问题迎刃而解



你可能感兴趣的:(mysqld daemon start failed)