MySQL: Job failed to start, mysqld: Can’t create test file user.lower-test

Fehlerbeschreibung

Nach dem Verschieben des MySQL-Datenverzeichnisses (Parameter datadir in /etc/mysql/my.cnf) startet der MySQL-Server nicht mehr. Als Fehler wird Job failed to start gemeldet:

root@ubuntu:~# /etc/init.d/mysql restart
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
start: Job failed to start

Der MySQL-Server-Start direkt aus dem bin-Verzeichnis endet mit dem Fehler Can’t create test file /…./user.lower-test:

root@ubuntu:/bin# mysqld
150831  0:40:58 [Warning] Can't create test file /..../user.lower-test
150831  0:40:58 [Warning] Can't create test file /..../user.lower-test

Mögliche Ursache

Bei Ubuntu ist AppArmor eine häufige Ursache. Diese Sicherheitssoftware enthält ein Profil für MySQL, in dem u. a. das Datenverzeichnis von MySQL festgelegt ist. AppArmor blockiert den Zugriff von MySQL, weil das neue Datenverzeichnis nicht bekannt ist.

Lösung

Durch Eintrag des neuen Daten-Verzeichnisses in /etc/apparmor.d/usr.sbin.mysqld kann der Fehler behoben werden:

vi /etc/apparmor.d/usr.sbin.mysqld

...
  # /var/lib/mysql/ r,
  # /var/lib/mysql/** rwk,
  /neues-datenverzeichnis/mysql/ r,
  /neues-datenverzeichnis/mysql/** rwk,
...

Nach dem Neustart von AppArmor sollte auch MySQL-Server nun starten:

/etc/init.d/apparmor restart
/etc/init.d/mysql restart

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.