6.7.4 Контекст файлов SELinux
Сервер MySQL читает и записывает во многие файлы. Если контекст SELinux для этих файлов не установлен правильно, доступ к файлам может быть запрещён.
В следующих инструкциях используется двоичный файл semanage для управления контекстом файла; в RHEL он входит в пакет policycoreutils-python-utils:
yum install -y policycoreutils-python-utils
После установки двоичного файла semanage, вы можете перечислить контексты файлов MySQL, используя semanage с опцией fcontext.
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 RPMs расположение — /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.
Установка RPM-пакета MySQL Server создаёт каталог /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.
© 2025 Oracle
Licensed under the GPLv2 License.