我尝试在 CentOS 6 上使用 SELinux 启动 MySQL,但是出现以下错误。
131212 09:08:08 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131212 09:08:58 mysqld_safe Starting mysqld daemon with databases from /u/mysql
131212 9:08:58 [Warning] Can't create test file /u/mysql/webserver.lower-test
131212 9:08:58 [Warning] Can't create test file /u/mysql/webserver.lower-test
^G/usr/libexec/mysqld: Can't change dir to '/u/mysql/' (Errcode: 13)
131212 9:08:58 [ERROR] Aborting
我们已经在许多其他服务器上设置了 MySQL,但这里的区别在于 mysql 数据目录与标准 /vat/lib.mysql 位于不同的分区中。相反,它位于 /u/mysql 中。
这是 /etc/my.cnf
[mysqld]
datadir=/u/mysql
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet = 32M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
以下是 mysql 目录的权限
drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
以下是 /u/mysql 目录中某个目录的权限
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 databasefolder
有人知道如何修复这个问题吗?我可以确认关闭 SELinux 可以解决该问题,因此这一定是某种 SELinux 权限问题。
谢谢
答案1
答案2
我的同事建议这最终解决问题。
你可以通过以下方式查看可读的拒绝原因:
audit2why -a
要生成新的策略模块,请使用
audit2allow -a -M <policyname>
如果出现未找到错误
yum install policycoreutils-python pschaff