Итак, я привязал MySQL к / opt / chroot / mysql, и все работает нормально. Apache настроен нормально и тоже нормально работает.
Я создал небольшой скрипт PHP, который подключается к MySQL Daemon, и настроил PHP так, чтобы используемый по умолчанию сокет был chrooted. Когда SELinux отключен, скрипт может нормально подключаться. Однако, когда SELinux включен, скрипту не удается подключиться (с номером ошибки 13), и журнал аудита сообщает мне, что SELinux отклонил запрос.
В каждом найденном мной руководстве, посвященном этой проблеме, мне предлагается отключить SELinux. Я не хочу этого делать, поэтому, пожалуйста, не предлагайте этого! Мне нужно решение, которое работает, пока включен SELinux ... Я предполагаю, что оно должно существовать ...
Я предполагаю, что мне, вероятно, придется изменить контексты SELinux для файлов mysql, но я не уверен, на что их изменить, чтобы они работали.
ОБНОВЛЕНИЕ 2
type = AVC msg = audit (1318863312.959: 435): avc: denied {connectto} для pid = 12472 comm = "httpd" path = "/ opt / chroot / mysql / var / lib / mysql / mysql.sock" scontext = unlimited_u : system_r: httpd_t: s0 tcontext = неограниченный_u: неограниченный_r: неограниченный_t: s0-s0: c0.c1023 tclass = unix_stream_socket
Вы можете создать настраиваемый модуль политики SELinux, выполнив следующие действия:
# grep httpd_t audit.log | audit2allow -m httpd > httpd.te
# checkmodule -M -m -o httpd.mod httpd.te
# semodule_package -m httpd.mod -o httpd.pp
# semodule -i httpd.pp
Ссылаться на этот тема для более подробной информации.
ОБНОВИТЬ
Бегать semanage
команда, чтобы добавить отображение контекста для /opt/chroot/mysql/var/lib/mysql/
:
# semanage fcontext -a -t mysqld_db_t "/opt/chroot/mysql/var/lib/mysql(/.*)?"
И использовать restorecon
команда для применения этого отображения контекста:
# restorecon -Rv /opt/chroot/mysql/var/lib/mysql
Если вы подключаетесь через TCP / IP, попробуйте следующее:
# setsebool -P httpd_can_network_connect 1