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