So beheben Sie Socket-Fehler in MySQL

Note

MySQL verwaltet Verbindungen zum Datenbankserver mithilfe vonsocket file, einer speziellen Art von Datei, die die Kommunikation zwischen verschiedenen Prozessen erleichtert. Die Socket-Datei des MySQL-Servers heißtmysqld.sock und wird auf Ubuntu-Systemen normalerweise im Verzeichnis/var/run/mysqld/gespeichert. Diese Datei wird vom MySQL-Dienst automatisch erstellt.

Manchmal können Änderungen an Ihrem System oder Ihrer MySQL-Konfiguration dazu führen, dass MySQL die Socket-Datei nicht lesen kann und Sie keinen Zugriff auf Ihre Datenbanken erhalten. Der häufigste Socket-Fehler sieht folgendermaßen aus:

OutputERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Es gibt einige Gründe, warum dieser Fehler auftreten kann, und einige mögliche Möglichkeiten, ihn zu beheben.

Eine häufige Ursache für diesen Fehler ist, dass der MySQL-Dienst angehalten wurde oder nicht gestartet wurde, was bedeutet, dass die Socket-Datei überhaupt nicht erstellt werden konnte. Versuchen Sie, den Dienst mitsystemctl zu starten, um herauszufinden, ob dies der Grund ist, warum dieser Fehler angezeigt wird:

sudo systemctl start mysql

Versuchen Sie dann erneut, auf die MySQL-Eingabeaufforderung zuzugreifen. Wenn der Socket-Fehler weiterhin auftritt, überprüfen Sie den Speicherort, an dem Ihre MySQL-Installation nach der Socket-Datei sucht. Diese Informationen finden Sie in der Dateimysqld.cnf:

sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

Suchen Sie im Abschnitt[mysqld] dieser Datei nach dem Parametersocket. Es wird so aussehen:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
. . .

Schließen Sie diese Datei und stellen Sie sicher, dass die Dateimysqld.sock vorhanden ist, indem Sie einen Befehlls in dem Verzeichnis ausführen, in dem MySQL sie voraussichtlich finden wird:

ls -a /var/run/mysqld/

Wenn die Socket-Datei vorhanden ist, wird sie in der Ausgabe dieses Befehls angezeigt:

Output.  ..  mysqld.pid  mysqld.sock  mysqld.sock.lock

Wenn die Datei nicht vorhanden ist, liegt dies möglicherweise daran, dass MySQL versucht, sie zu erstellen, jedoch nicht über die erforderlichen Berechtigungen verfügt. Sie können sicherstellen, dass die richtigen Berechtigungen vorhanden sind, indem Sie den Besitz des Verzeichnisses in den Benutzer und die Gruppe vonmysqländern:

sudo chown mysql:mysql /var/run/mysqld/

Stellen Sie dann sicher, dass der Benutzer vonmysqlüber die entsprechenden Berechtigungen für das Verzeichnis verfügt. Das Setzen dieser Werte auf775 funktioniert in den meisten Fällen:

sudo chmod -R 755 /var/run/mysqld/

Starten Sie abschließend den MySQL-Dienst neu, damit er versuchen kann, die Socket-Datei erneut zu erstellen:

sudo systemctl restart mysql

Versuchen Sie dann erneut, auf die MySQL-Eingabeaufforderung zuzugreifen. Wenn der Socket-Fehler weiterhin auftritt, liegt wahrscheinlich ein tieferes Problem mit Ihrer MySQL-Instanz vor. In diesem Fall sollten Sie das Fehlerprotokoll überprüfen, um festzustellen, ob es Hinweise liefern kann.

Related