8.7.4 SELinux 文件上下文
MySQL 服务器读取和写入许多文件。如果 SELinux 上下文未正确设置,这些文件的访问可能被拒绝。
以下的指令使用 semanage
二进制文件管理文件上下文;在 RHEL 中,它是 policycoreutils-python-utils
包的一部分:
yum install -y policycoreutils-python-utils
安装 semanage
二进制文件后,您可以使用 semanage
和 fcontext
选项来列出 MySQL 文件上下文。
semanage fcontext -l | grep -i mysql
默认情况下,数据目录的位置是 /var/lib/mysql/
,并使用 mysqld_db_t
上下文。
如果您编辑配置文件以使用不同的数据目录位置或文件(例如二进制日志),您可能需要为新位置设置上下文。例如:
semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/datadir(/.*)?"
restorecon -Rv /path/to/my/custom/datadir
semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/logdir(/.*)?"
restorecon -Rv /path/to/my/custom/logdir
默认情况下,RedHat RPM 的位置是 /var/log/mysqld.log
,并使用 mysqld_log_t
上下文。
如果您编辑配置文件以使用不同的位置,您可能需要为新位置设置上下文。例如:
semanage fcontext -a -t mysqld_log_t "/path/to/my/custom/error.log"
restorecon -Rv /path/to/my/custom/error.log
默认情况下,PID 文件的位置是 /var/run/mysqld/mysqld.pid
,并使用 mysqld_var_run_t
上下文。
如果您编辑配置文件以使用不同的位置,您可能需要为新位置设置上下文。例如:
semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/pidfile/directory/.*?"
restorecon -Rv /path/to/my/custom/pidfile/directory
如果您编辑配置文件以使用不同的位置,您可能需要为新位置设置上下文。例如:
从 MySQL 5.6.34、5.7.16 和 8.0.11 版本开始。
semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/mysql\.sock"
restorecon -Rv /path/to/my/custom/mysql.sock
如果您启用了使用该目录的功能(通过设置 secure_file_priv
),您可能需要设置上下文。例如:
编辑该路径,如果您使用了不同的位置。出于安全原因,这个目录不能在数据目录中。
有关该变量的更多信息,请参阅 secure_file_priv
文档。
semanage fcontext -a -t mysqld_db_t "/var/lib/mysql-files/(/.*)?"
restorecon -Rv /var/lib/mysql-files
Edit this path if you used a different location. For security purposes, this directory should never be within the data directory.
For more information about this variable, see the secure_file_priv
documentation.