How to fix

Kann keine Verbindung zum lokalen MySQL-server über socket ‘/var/run/mysqld/mysqld.sock”

MariaDB and MySQL logos

Bei der Arbeit mit MySQL / MariaDB-Datenbank können Sie einen seltsamen Fehler abfangen:

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

Der gleiche Fehler in Protokolldateien:

[ERROR] Can't start server : Bind on unix socket: No such file or directory
[ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?

Im einfachsten Fall wird es durch das ritual von off/on gelöst:

sudo killall -9 mysqld
sudo /etc/init.d/mysql start

oder im modernen Stil:

sudo killall -9 mysqld
systemctl start mysql

Wenn off / on nicht hilft

OK, jetzt haben wir wirklich ein problem, keine Panik! Es gibt zwei häufigsten Ursachen:

  • Jemand benutzt bereits /var/run/mysqld/mysqld.sock Datei.
  • MySQL oder MariaDB kann nicht auf diese Datei zugreifen.

Mal sehen, wer diese Datei verwendet:

sudo lsof /var/run/mysqld/mysqld.sock

Als Ergebnis können wir bekommen:

COMMAND PID  USER   FD   TYPE  DEVICE     SIZE/OFF NODE NAME
mysqld  1299 mysql  6u   unix  0xf688b840 0t0      7877 /var/run/mysqld/mysqld.sock

Nun, jetzt wissen wir, wer unsere socket-Datei verwendet… Vielleicht sollten Sie ES kill -9, um es freizugeben (Sie kennen Ihre situation besser).

Im zweiten Fall druckt lsof:

...
lsof: status error on /run/mysqld/mysqld.sock: No such file or directory
...

Es gibt keine unsere Datei … Nun, wir können es manuell machen:

sudo mkdir -p /var/run/mysqld
sudo mkfifo /var/run/mysqld/mysqld.sock
sudo chown -R mysql /var/run/mysqld

In der ersten Zeile machen wir den vollständigen Pfad zur Datei.

Die zweite Zeile macht spezielle Datei, die von MySQL / MariaDB verwendet wird.

Und in der Dritten Zeile delegieren wir Zugriffsrechte auf mysql-Benutzer (die von MySQL / MariaDB verwendet).

Jetzt sollte es gut funktionieren… Lass uns unseren server starten:

systemctl restart mysql

Sei glücklich!