MySQL 5.6 y SELinux están discutiendo

MySQL 5.6 y SELinux están discutiendo

CentOS 6.4(x64) / MySQL 5.6.10

Instalé MySQL desde los archivos fuente y lo inicié bien en su ubicación original (/var/lib/mysql). Moví todo a un volumen diferente (/u0/mysql) y realicé algunas rondas para eximirlo de SELinux ( cat /var/log/audit/audit.log | audit2allow -M mysql-*seguido de semodule -i mysql-*.pp). Después de cada ronda de esto, intento reiniciar el servicio y veo este error:

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

Después de 3 o 4 rondas de agregar exenciones, noté que los archivos ya no cambiaban. Es decir, todo lo que se podía agregar de esta manera ya se había agregado. Por curiosidad corrí audit2why -ay obtuve un montón 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.

Esto me lleva a creer quedeberíaestar trabajando. Si desactivo SELinux: setenforce 0entonces mysql comenzará bien, por lo que (SE) todavía se interpondrá en el camino.

La búsqueda a través de SF se volvióestearriba: lo he probado sin cambios en el resultado.

Entonces: ¿cómo puedo saber dónde está el bloqueo?

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

Respuesta1

Debe cambiar el contexto de seguridad del nuevo directorio para que sea el mismo que /var/lib/mysql.

Por ejemplo:

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

Luego cambie el nuevo directorio a la misma configuración con chcon

chcon -R -u system_u -r object_r -t mysqld_db_t /u0/mysql

Respuesta2

También puedes probar algo como esto:

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

Por cierto, aquí hay una excelente introducción a SELinux:http://www.youtube.com/watch?v=MxjenQ31b70de la Cumbre Redhat 2012. Además, busque en sus archivos de registro mensajes de error en /var/log/audit/audit.logo /var/log/messages.

información relacionada