dgi*_*bbs 4 mysql linux selinux centos
我正在尝试在 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
Run Code Online (Sandbox Code Playgroud)
我们已经在许多其他服务器上设置了 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
Run Code Online (Sandbox Code Playgroud)
这是mysql目录的权限
drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
Run Code Online (Sandbox Code Playgroud)
这是 /u/mysql 目录中目录之一的权限
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 databasefolder
Run Code Online (Sandbox Code Playgroud)
有没有人对如何解决这个问题有任何想法?我可以确认关闭 SELinux 可以解决问题,因此它必须是某种 SELinux 权限问题。
谢谢
use*_*517 11
开始的地方是查看您的 /var/log/audit/audit.log 以获取与 mysqld 相关的 AVC 拒绝消息。这些可以传递给audit2why以收集更多信息以帮助您决定要做什么。
您的 mysql 文件位于非标准位置,尽管目录具有正确的上下文,但其中的文件很可能不是。实现此目的的最佳方法是为 /u/mysql 目录添加一个新的 fcontext
semanage fcontext -a -t mysqld_db_t "/u/mysql(/.*)?"
restorecon -rv /u/mysql
Run Code Online (Sandbox Code Playgroud)
该semanage的命令配置策略,以便后续的restorecon命令将不会设置上下文回到系统默认值。
dgi*_*bbs -3
我的同事建议这最终解决了问题。
您可以查看人类可读的拒绝原因
audit2why -a
Run Code Online (Sandbox Code Playgroud)
要生成新的策略模块,请使用
audit2allow -a -M <policyname>
Run Code Online (Sandbox Code Playgroud)
如果出现未找到错误
yum install policycoreutils-python pschaff
Run Code Online (Sandbox Code Playgroud)
https://www.centos.org/forums/viewtopic.php?t=8935
| 归档时间: |
|
| 查看次数: |
4624 次 |
| 最近记录: |