mysqld gibt den Fehlercode 13 aus, da es keine Testdateien erstellen kann.

mysqld gibt den Fehlercode 13 aus, da es keine Testdateien erstellen kann.

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 startführt zu

    Start: Job konnte nicht gestartet werden

  • Der manuelle Startversuch mysqldals 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

verwandte Informationen