После установки и настройки MySQL и rsyslog с расширениями mysql я получаю следующую ошибку в / var / log / messages:
rsyslogd: ошибка базы данных (2002): не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock' (13)
Я могу подключиться через сокет с помощью клиента mysql, указав --socket = / var / lib / mysql / mysql.sock.
Я сузил проблему до разрешений selinux. В файле /var/log/audit/audit.log есть следующее:
type = AVC msg = audit (1244654592.150: 320): avc: denied {search} for pid = 6382 comm = "rsyslogd" name = "mysql" dev = xvda3 ino = 1369538 scontext = user_u: system_r: syslogd_t: s0 tcontext = system_u : object_r: mysqld_db_t: s0 tclass = dir
Перевод selinux в разрешающий режим действительно решает проблему. Это будет производственный сервер, и оставлять selinux в разрешающем режиме не вариант.
Запуск restorecon на /var/lib/mysql/mysql.sock также не решает проблему. Может ли кто-нибудь помочь мне?
Редактировать:
Итак, мои поиски продолжаются, вот обновление. В итоге я создал семодуль, чтобы явно разрешить такое поведение. Для этого я сделал следующее (как root):
# cd /var/log/audit/
# grep mysql audit.log | audit2allow
Это выяснилось:
#============= syslogd_t ==============
allow syslogd_t mysqld_db_t:dir search;
allow syslogd_t mysqld_var_run_t:sock_file write;
allow syslogd_t mysqld_t:unix_stream_socket connectto;
Это действительно были разрешения, которые я хотел предоставить для rsyslog ... поэтому я скомпилировал его в модуль в соответствии с RedHat's инструкции и установил его с помощью команды semodule.
После попытки перезапуска службы rsyslog ошибка продолжается, и в журнале аудита нет новых сообщений об отказе. У кого-нибудь есть идеи?
Будьте осторожны с неаудитами, политика может определять вещи, которые не подлежат аудиту, то есть в неаудитах обычно говорится: «Я ожидаю этого сбоя и не хочу его видеть / чтобы он заполнял мои журналы». в таком случае вы этого не увидите.
со страницы руководства semodule
Включите все сообщения AVC, для которых
SELinux в настоящее время не выполняет аудит.
semodule -DB
Снова включите правила "dontaudit".
semodule -B
Вот некоторая предыстория, описывающая это
http://danwalsh.livejournal.com/11673.html
Вам обязательно стоит ознакомиться с концепциями справочной политики (refpolicy). просмотрите модули syslog и mysql (источник политики), при необходимости перекомпилируйте эти модули и опробуйте их.
Также не забывайте, что в разрешающем режиме отказы регистрируются только один раз, пока не произойдет перезагрузка или загрузка политики. в принудительном исполнении вы получаете отказ каждый раз при попытке доступа.
Ву !!
Так что я был очень близок с решением semodule ... Это действительно сработало, но я не уверен на 100%, почему. Я перезагрузил сервер и перезагрузил semodule от разочарования. selinux включен, и я вижу, что в базе данных появляются системные сообщения.
Надеюсь, это поможет кому-то другому, если он наткнется на это. Удачи!