Я пытаюсь запустить 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