Não é possível iniciar o Mysql com o SELinux

4

Estou tentando iniciar o MySQL com o SELinux no CentOS 6, mas estou recebendo o seguinte erro.

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

Nós configuramos o MySQL com muitos outros servidores, mas a diferença aqui é que o datadir mysql está em uma partição diferente do padrão /vat/lib.mysql. Em vez disso, está em / u / mysql.

Aqui está o /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

Aqui estão as permissões para o diretório mysql

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

e aqui estão as permissões para uma das diretórios no diretório / u / mysql

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

Alguém tem alguma ideia de como corrigir isso? Posso confirmar que desligar o SELinux resolve o problema, por isso tem que ser algum tipo de problema de permissões do SELinux.

Obrigado

    
por dgibbs 12.12.2013 / 10:17

1 resposta

11

O lugar para começar é olhar para o seu /var/log/audit/audit.log para o AVC negado mensagens relacionadas ao mysqld. Eles podem ser passados para audit2why para coletar mais informações para ajudá-lo a decidir o que fazer.

Você tem seus arquivos mysql em um local não padrão e, embora os diretórios tenham o contexto correto, é provável que os arquivos neles não estejam. A melhor maneira de conseguir isso é adicionar um novo fcontext para o diretório / u / mysql

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

O comando semanage configura a política para que subseqüentes restorecon não irão definir o contexto de volta ao padrão do sistema.

    
por 12.12.2013 / 10:43