So sieht die Meldung aus
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)Häufige Ursachen
- Der Datenbankdienst läuft nicht: gestoppt, abgestürzt oder vom OOM-Killer beendet.
- Der Server ist nicht gestartet, weil die Platte voll ist oder das Datenverzeichnis beschädigt ist bzw. falsche Rechte hat.
- Client und Server nutzen unterschiedliche Socket-Pfade, z. B.
/run/mysqld/mysqld.sockund/var/lib/mysql/mysql.sock. - Die Anwendung verbindet sich zu
localhost, das heißt über den Socket, der Server lauscht aber nur auf TCP. - Eine zweite Instanz oder ein Container nutzt einen anderen Socket.
Prüfen
- Läuft der Dienst?
systemctl status mariadb - Warum wurde er beendet? Die letzten Logzeilen lesen
- Existiert der Socket?
ls -l /run/mysqld/ - Ist Platz für das Datenverzeichnis frei?
df -h /var/lib/mysql
Lösung
- Dienst starten und lesen, warum er stand:
systemctl start mariadb. Bei MySQL heißt die Unitmysql. - Speicherplatz freigeben bzw. die Rechte auf
/var/lib/mysqlreparieren, falls das der Grund war. - Hat der OOM-Killer ihn beendet, den Speicherbedarf senken (
innodb_buffer_pool_size) oder RAM ergänzen. - In den Abschnitten
[client]und[mysqld]der Konfiguration denselben Socket-Pfad verwenden. - In der Anwendung
127.0.0.1und Port 3306 stattlocalhosteintragen, um über TCP zu verbinden.
Häufige Fragen
Was ist hier der Unterschied zwischen localhost und 127.0.0.1?
Bei localhost nutzt der MySQL-Client die Unix-Socket-Datei. Bei 127.0.0.1 nutzt er TCP. Fehlt der Socket, TCP funktioniert aber, erklärt das genau diesen Fehler.
Welcher Fehler kommt bei falschem Passwort?
Das ist ERROR 1045. Fehler 2002 kommt früher: Der Client erreicht den Server gar nicht erst.