Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  SELinux File Context

8.7.4 SELinux 文件上下文

MySQL 服务器从许多文件中读取和写入。如果 SELinux 上下文没有正确地设置为这些文件,可能会被拒绝访问这些文件。

以下说明使用 semanage 二进制文件来管理文件上下文;在 RHEL 中,它是 policycoreutils-python-utils 软件包的一部分:

yum install -y policycoreutils-python-utils

安装 semanage 二进制文件后,可以使用 semanagefcontext 选项来列出 MySQL 文件上下文。

semanage fcontext -l | grep -i mysql

设置 MySQL 数据目录上下文

默认数据目录位置是 /var/lib/mysql/;使用的 SELinux 上下文类型是 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

设置 MySQL 错误日志文件上下文

RedHat RPM 的默认位置是 /var/log/mysqld.log;使用的 SELinux 上下文类型是 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 文件上下文

默认的 PID 文件位置是 /var/run/mysqld/mysqld.pid;使用的 SELinux 上下文类型是 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

设置 Unix 域套接字上下文

默认的 Unix 域套接字位置是 /var/lib/mysql/mysql.sock;使用的 SELinux 上下文类型是 mysqld_var_run_t

如果您编辑配置文件以使用不同的位置,您可能需要设置新位置的上下文。例如:

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 目录上下文

适用于 MySQL 5.6.34、5.7.16 和 8.0.11 及更高版本。

安装 MySQL 服务器 RPM 创建了 /var/lib/mysql-files/ 目录,但没有设置其 SELinux 上下文。/var/lib/mysql-files/ 目录旨在用于操作,如 SELECT ... INTO OUTFILE

如果您启用了该目录的使用通过设置 secure_file_priv,您可能需要设置上下文,如下所示:

semanage fcontext -a -t mysqld_db_t "/var/lib/mysql-files/(/.*)?"
restorecon -Rv /var/lib/mysql-files

编辑此路径,如果您使用了不同的位置。出于安全考虑,该目录永远不应该在数据目录中。

有关该变量的更多信息,请参阅 secure_file_priv 文档。