Назад | Перейти на главную страницу

Невозможно запустить Mysql с SELinux

Я пытаюсь запустить MySQL с SELinux на CentOS 6, однако получаю следующую ошибку.

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

Мы установили 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

Вот разрешения для каталога mysql

drwxr-xr-x. mysql    mysql    system_u:object_r:mysqld_db_t:s0 mysql

и вот разрешения для одного из каталогов в каталоге / u / mysql

drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 databasefolder

Есть ли у кого-нибудь идеи, как это исправить? Я могу подтвердить, что отключение SELinux решает проблему, поэтому это должна быть какая-то проблема с разрешениями SELinux.

Спасибо

Начать нужно с просмотра вашего /var/log/audit/audit.log сообщений об отказе AVC, относящихся к mysqld. Их можно передать audit2why чтобы собрать дополнительную информацию, которая поможет вам решить, что делать.

У вас есть файлы mysql в нестандартном месте, и хотя каталоги имеют правильный контекст, вероятно, файлов в них нет. Лучший способ добиться этого - добавить новый fcontext для каталога / u / mysql.

semanage fcontext -a -t mysqld_db_t "/u/mysql(/.*)?"
restorecon -rv /u/mysql

В semanage команда настраивает политику так, чтобы последующие восстановление Команды не вернут контекст к системному по умолчанию.

Мой коллега сообщил, что это в конце концов решило проблему.

Вы можете увидеть понятные человеку причины отказов с помощью

audit2why -a

Для создания новых модулей политики используйте

audit2allow -a -M <policyname>

Если вы получите ошибку "Не найдено"

yum install policycoreutils-python pschaff

https://www.centos.org/forums/viewtopic.php?t=8935