![mysqld gibt den Fehlercode 13 aus, da es keine Testdateien erstellen kann.](https://rvso.com/image/1036656/mysqld%20gibt%20den%20Fehlercode%2013%20aus%2C%20da%20es%20keine%20Testdateien%20erstellen%20kann..png)
Neuinstallation vom 11.04. Dann habe ich alle Anweisungen hier befolgt: http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-ubuntu-11.04-lamp
Wenn ich jetzt mysqld ausführe, erhalte ich diesen Fehler:
makara@rahu:~$ mysqld
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
111103 13:39:37 [ERROR] Aborting
111103 13:39:37 [Note] mysqld: Shutdown complete
Jemand im IRC sagte, es könnte ein Paketproblem sein??
Danke, Rübe
Antwort1
Ich hatte das gleiche Problem nach dem Upgrade von Oneiric auf Precise, das MySQL von 5.1 auf 5.5 aktualisiert.
In meinem Fall war das Problem, dass
/etc/apparmor.d/local/usr.sbin.mysqld
fehlte, obwohl es enthalten war von
/etc/apparmor.d/usr.sbin.mysqld
standardmäßig. Ein einfaches
sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
hat das Problem für mich gelöst.
Für Suchende: Die Logdatei mit den interessanten Informationen ist /var/log/upstart/mysql. In /var/log/mysql(*|/*) steht nichts.
Was Sie sehen können, ist unter anderem:
sudo service mysql start
führt zuStart: Job konnte nicht gestartet werden
Der manuelle Startversuch
mysqld
als normaler Benutzer schlägt wie üblich fehl (bevor das obige Problem auftritt), da der Benutzer keinen Zugriff auf /var/lib/mysql hat (dies ist im Syslog zu finden).Das Starten von mysqld als Root funktioniert (ich weiß nicht, warum)
Antwort2
mysqld sollte als mysql-Benutzer ausgeführt werden. Sie sollten den Daemon nicht manuell ausführen. Starten Sie ihn besser als Dienst wie folgt:
sudo service mysql start
Die Fehlermeldung weist darauf hin, dass der MySQL-Dienst auf bestimmte Dateien nicht zugreifen kann, die ihm in Ihrer Benutzerumgebung nicht zugänglich sein sollten. Dieses Verhalten sollte also korrekt sein. Sie sollten jedoch überprüfen, ob die Verzeichnisse existieren und wem sie gehören und wer darauf Zugriff hat (verwenden Sie hierfür ls -la):
ls -la /var/lib/
ls -la /var/lib/mysql