MySQL 5.6 e SELinux estão discutindo

2

CentOS 6.4 (x64) / MySQL 5.6.10

Instalou o MySQL a partir dos arquivos fonte e iniciou tudo bem sob sua localização original (/ var / lib / mysql). Mudei tudo para um volume diferente (/ u0 / mysql) e passei por algumas rodadas de isenção do SELinux ( cat /var/log/audit/audit.log | audit2allow -M mysql-* seguido por semodule -i mysql-*.pp ). Depois de cada rodada, tento reiniciar o serviço e vejo esse erro:

Starting MySQL..The server quit without updating PID file (/u0/mysql/server.pid).
 [FAILED]

Após 3 a 4 rodadas de adição de isenções, notei que os arquivos não estavam mais mudando. IE tudo o que poderia ser adicionado desta forma já havia sido adicionado. Por curiosidade eu corri audit2why -a e recebi uma grande quantidade de:

type=AVC msg=audit(1387207317.009:666): avc:  <some permission> for  pid=20640 
  comm="mysqld" dev=sdc1 ino=36831373 scontext=unconfined_u:system_r:mysqld_t:s0 
  tcontext=system_u:object_r:default_t:s0 tclass=file
 Was caused by:
     Unknown - would be allowed by active policy
     Possible mismatch between this policy and the one under which the audit message was generated.
     Possible mismatch between current in-memory boolean settings vs. permanent ones.

Isso me leva a acreditar que deveria estar funcionando. Se eu desabilitar o SELinux: setenforce 0 então o mysql irá começar bem, então ele (SE) ainda está atrapalhando.

Pesquisando por meio do SF este up - tentei sem alterações no resultado.

SO: como descubro onde está o bloqueio?

EDITAR:

[root@server u0]# ls -ldZ /var/lib/mysql
drwxr-xr-x. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 /var/lib/mysql

[root@server u0]# ls -ldZ /u0/mysql
drwxr-xr-x. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 /u0/mysql
    
por ethrbunny 17.12.2013 / 14:56

2 respostas

1

Você precisa alterar o contexto de segurança do novo diretório para que seja o mesmo que / var / lib / mysql.

Por exemplo:

ls -ldZ /var/lib/mysql/
drwxr-x--x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql/

Em seguida, altere o novo diretório para as mesmas configurações com chcon

chcon -R -u system_u -r object_r -t mysqld_db_t /u0/mysql
    
por 17.12.2013 / 15:10
1

Você também pode tentar algo assim:

chcon --reference=/path/to/existing/file /path/to/new/file

BTW, aqui está uma ótima introdução ao SELinux: link da Redhat 2012 Summit. Além disso, procure em seus arquivos de log por mensagens de erro em /var/log/audit/audit.log ou /var/log/messages .

    
por 17.12.2013 / 15:23

Tags