Frage

Ich habe meine Bin-Logs in einen anderen Ordner gebracht:

log-bin = /storage/mysql/bin-log
log-bin-index = /storage/mysql/bin-log.index

Wenn ich versuche, MySQLD zu starten, bekomme ich Folgendes:

/usr/libexec/mysqld: File '/storage/mysql/bin-log.index' not found (Errcode: 13)

Berechtigungen für Dateien und Verzeichnis sind in Ordnung, sudo -u mysql touch /storage/mysql/bin-log.index Funktioniert gut und es gibt keinen Apparmor.

Irgendwelche Ideen, was könnte das verursachen?

War es hilfreich?

Lösung

Selinux wurde installiert und ermöglichte keinen Zugriff auf diese Dateien.

Deaktivieren löst das Problem.

Andere Tipps

Basierend auf dieser Dokumentation von Red Hat: Kapitel 3. Selinux -Kontexte und man page lesen:

Ich möchte Protokolldateien in /var/log/mysql Anstatt von /var/log/mariadb und lassen Sie Selinux aktiviert.

Das neu erstellte Protokollverzeichnis /var/log/mysql wird standardmäßig für MySQL Server aufgrund von Selinux nicht zugänglich sein.

So:

grep für String setroubleshoot in /var/log/ und leiten Sie die angegebenen sealert Befehle, um Details zum tatsächlichen Selinux -Problem zu finden, das Sie beobachten.

Zum Beispiel:

sealert -l 141804b3-9ae5-4484-be0b-741fc558ff6d
SELinux is preventing /usr/libexec/mysqld from 'read, write' accesses on the file bin_hull03.index.

*****  Plugin catchall (100. confidence) suggests   **************************

If you believe that mysqld should be allowed read write access on the bin_hull03.index file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld
# semodule -i my-mysqld.pp


Additional Information:
...

Dies ist in diesem Fall nicht unbedingt hilfreich.

Verwenden ls -lZ um herauszufinden, was der Kontext von /var/log/mysql ist relativ zu /var/log/mariadb:

# ls -lZ /var/log/mysql /var/log/mariadb
drwxrwx---. root mysql unconfined_u:object_r:var_log_t:s0 mysql
drwxr-x---. mysql mysql system_u:object_r:mysqld_log_t:s0 mariadb

Passen Sie nun den Dateikontext des Baums an /var/log/mysql.

Überprüfen Sie, welcher Wert der vermeintliche Wert ist, indem Sie den Kontext für abrufen /var/log/mariadb Aus der Selinux -Konfigurationsdatenbank:

# semanage fcontext --list | egrep '/var/log/(mysql|mariadb)'
/var/log/mysql.*       regular file  system_u:object_r:mysqld_log_t:s0 
/var/log/mysql(/.*)?   all files     system_u:object_r:mysqld_log_t:s0

Fügen Sie der Selinux -Einstellungsdatenbank einen Eintrag hinzu, um den Kontext des neuen Dateibaums zu definieren:

# semanage fcontext --add -s system_u -t mysqld_log_t  '/var/log/mysql(/.*)?'
semanage fcontext --list | egrep '/var/log/(mysql|mariadb)'
/var/log/mysql.*        regular file   system_u:object_r:mysqld_log_t:s0 
/var/log/mariadb(/.*)?  all files      system_u:object_r:mysqld_log_t:s0 
/var/log/mysql(/.*)?    all files      system_u:object_r:mysqld_log_t:s

Setzen Sie SELinux -Attribute rekursiv auf dem neuen Dateibaum selbst:

restorecon -r -F /var/log/mysql/

Das gibt das, was wir wollen:

# ls -lZR /var/log/mysql/
/var/log/mysql/:
drwxrwx---. root  mysql system_u:object_r:mysqld_log_t:s0 binary
drwxrwx---. root  mysql system_u:object_r:mysqld_log_t:s0 general
-rw-rw----. mysql mysql system_u:object_r:mysqld_log_t:s0 mysqld_safe_log.err
drwxrwx---. root  mysql system_u:object_r:mysqld_log_t:s0 relay
-rw-rw----. mysql mysql system_u:object_r:mysqld_log_t:s0 server.err
drwxrwx---. root  mysql system_u:object_r:mysqld_log_t:s0 slow

/var/log/mysql/binary:
-rw-rw----. mysql mysql system_u:object_r:mysqld_log_t:s0 bin_hull03.000001
-rw-rw----. mysql mysql system_u:object_r:mysqld_log_t:s0 bin_hull03.000002
-rw-rw----. mysql mysql system_u:object_r:mysqld_log_t:s0 bin_hull03.index

/var/log/mysql/general:

/var/log/mysql/relay:

/var/log/mysql/slow:
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top