MySQL 5.6 und SELinux streiten

MySQL 5.6 und SELinux streiten

CentOS 6.4 (x64) / MySQL 5.6.10

Habe MySQL aus den Quelldateien installiert und es an seinem ursprünglichen Speicherort (/var/lib/mysql) problemlos gestartet. Ich habe alles auf ein anderes Volume (/u0/mysql) verschoben und es mehrere Male von SELinux ausgenommen ( cat /var/log/audit/audit.log | audit2allow -M mysql-*gefolgt von semodule -i mysql-*.pp). Nach jeder dieser Runden versuche ich, den Dienst neu zu starten und sehe diesen Fehler:

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

Nach 3-4 Runden des Hinzufügens von Ausnahmen bemerkte ich, dass sich die Dateien nicht mehr änderten. Das heißt, alles, was auf diese Weise hinzugefügt werden konnte, war bereits hinzugefügt worden. Aus Neugierde lief ich los audit2why -aund bekam eine Menge von:

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.

Dies lässt mich glauben, dass essollenfunktionieren. Wenn ich SELinux deaktiviere, setenforce 0startet MySQL einwandfrei, es (SE) stört also immer noch.

Die Suche in SF wurdeDas- habe es versucht, ohne dass sich am Ergebnis etwas geändert hätte.

Also: Wie finde ich heraus, wo die Blockade ist?

BEARBEITEN:

[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

Antwort1

Sie müssen den Sicherheitskontext des neuen Verzeichnisses so ändern, dass er mit /var/lib/mysql übereinstimmt.

Zum Beispiel:

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

Ändern Sie dann das neue Verzeichnis mit chcon auf die gleichen Einstellungen

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

Antwort2

Sie können auch Folgendes versuchen:

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

Übrigens, hier ist eine großartige Einführung in SELinux:http://www.youtube.com/watch?v=MxjenQ31b70vom Redhat 2012 Summit. Suchen Sie in Ihren Protokolldateien auch nach Fehlermeldungen in /var/log/audit/audit.logoder /var/log/messages.

verwandte Informationen