Spec-Zone.ru › MySQL 5.7

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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/selinux-file-context.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API