479 Stimmen

error: 'Kann keine Verbindung zum lokalen MySQL-Server über Socket '/var/run/mysqld/mysqld.sock' (2)' -- Fehlt /var/run/mysqld/mysqld.sock

Mein Problem begann damit, dass ich mich nicht mehr als Root bei meiner mysql-Installation anmelden konnte. Ich habe versucht, mysql ohne aktivierte Passwörter laufen zu lassen... aber immer wenn ich den Befehl

# mysqld_safe --skip-grant-tables &

Ich würde die Eingabeaufforderung niemals zurückbekommen. Ich habe versucht zu folgen diese Anweisungen, um das Passwort wiederherzustellen .

Der Bildschirm sieht einfach so aus:

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

und ich bekomme keine Aufforderung, die SQL-Befehle zum Zurücksetzen des Passworts einzugeben.

Wenn ich es durch Drücken von CTRL + C erhalte ich die folgende Meldung:

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

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Wenn ich den Befehl erneut ausführe und lange genug stehen lasse, erhalte ich die folgende Reihe von Meldungen:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

Aber wenn ich dann versuche, mich als Root anzumelden, indem ich das tue:

# mysql -u root

Ich erhalte die folgende Fehlermeldung:

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

Ich habe es überprüft und /var/run/mysqld/mysqld.sock Datei nicht existiert. Der Ordner schon, aber die Datei nicht.

Ich weiß nicht, ob das hilfreich ist oder nicht, aber ich habe find / -name mysqld und es wurde angezeigt:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

Ich weiß nicht, ob das normal ist oder nicht. Aber ich füge diese Informationen nur für den Fall ein, dass es hilft.

Ich beschloss schließlich, mysql zu deinstallieren und neu zu installieren.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

Nachdem ich alle Pakete in der gleichen Reihenfolge wie oben neu installiert hatte, erhielt ich während der phpmyadmin-Installation den gleichen Fehler:

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

Also habe ich erneut versucht, zu deinstallieren/neu zu installieren. Dieses Mal habe ich nach der Deinstallation der Pakete auch alle mysql-Dateien und -Verzeichnisse manuell umbenannt in mysql.bad an ihren jeweiligen Standorten.

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

Dann habe ich versucht, neu zu installieren mysql-server y mysql-client wieder. Aber ich habe festgestellt, dass ich nicht nach einem Passwort gefragt werde. Sollte es nicht nach einem Admin-Passwort fragen?

437voto

Joe Cheng Punkte 7618

Versuchen Sie diesen Befehl,

sudo service mysql start

246voto

Ray Punkte 38299

Um alle Socket-Dateien auf Ihrem System zu finden, führen Sie aus:

sudo find / -type s

Mein Mysql-Serversystem hatte den Socket geöffnet bei /var/lib/mysql/mysql.sock

Wenn Sie herausgefunden haben, wo der Socket geöffnet wird, fügen Sie die Zeile mit dem Pfad zur Socket-Datei zu Ihrer /etc/my.cnf-Datei hinzu oder bearbeiten Sie sie:

socket=/var/lib/mysql/mysql.sock

Manchmal gibt das Systemstartskript, das die ausführbare Befehlszeile gestartet hat, ein Flag an --socket=path . Dieses Flag könnte den my.cnf-Speicherort überschreiben, und das würde dazu führen, dass ein Socket nicht dort gefunden wird, wo er laut my.cnf-Datei sein sollte. Wenn Sie dann versuchen, den mysql-Befehlszeilen-Client auszuführen, wird er my.cnf lesen, um den Socket zu finden, aber er wird ihn nicht finden, da er von dem Ort abweicht, an dem der Server ihn erstellt hat. Solange Sie sich also nicht darum kümmern, wo der Socket liegt, sollte es reichen, die my.cnf so zu ändern, dass sie passt.

Beenden Sie dann den mysqld-Prozess. Wie Sie dies tun, hängt vom System ab.

Wenn Sie Superuser im Linux-System sind, versuchen Sie eine der folgenden Methoden, wenn Sie nicht wissen, welche Methode Ihr Mysql-Setup verwendet:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Einige Systeme sind nicht so eingerichtet, dass sie eine elegante Möglichkeit haben, mysql zu stoppen (oder mysql reagiert aus irgendeinem Grund nicht), und Sie können mysql mit einer der beiden Methoden zwangsweise beenden:
    • Ein Schritt: pkill -9 mysqld
    • Zweistufig (am wenigsten bevorzugt):
      • Finden Sie die Prozess-ID von mysql entweder mit pgrep mysql o ps aux | grep mysql | grep -v grep
      • Angenommen, die Prozess-ID lautet 4969 beenden Sie mit kill -9 4969

Nachdem Sie dies getan haben, sollten Sie nach einer pid-Datei in /var/run/mysqld/ und löschen Sie es

Stellen Sie sicher, dass die Berechtigungen auf Ihrem Socket so eingestellt sind, dass der Benutzer, unter dem mysqld läuft, darauf lesen und schreiben kann. Ein einfacher Test ist es, den Socket auf volle Lese-/Schreibrechte zu öffnen und zu sehen, ob er noch funktioniert:

chmod 777 /var/run/mysqld/mysqld.sock

Wenn das Problem damit behoben ist, können Sie die Berechtigungen und den Besitz des Sockets je nach Bedarf an Ihre Sicherheitseinstellungen anpassen.

Außerdem muss das Verzeichnis, in dem sich der Socket befindet, für den Benutzer, der den mysqld-Prozess ausführt, erreichbar sein.

211voto

Hammad Raza Punkte 2283

Dieser Fehler tritt aufgrund von Mehrfachinstallationen von mysql auf. Führen Sie den Befehl aus:

ps -A|grep mysql

Beenden Sie den Prozess mit:

sudo pkill mysql

und führen Sie dann den Befehl aus:

ps -A|grep mysqld

Beenden Sie auch diesen Prozess, indem Sie ihn ausführen:

sudo pkill mysqld

Führen Sie einfach die folgenden Befehle aus, und schon sind Sie fertig:

service mysql restart
mysql -u root -p

Habe sehr gut funktionierende mysql wieder

45voto

Ioan Stef Punkte 431

Die Lösung ist viel einfacher.

  1. Zuerst müssen Sie (im Terminal mit "sudo find / -type s") feststellen, wo Ihr mysql.sock Datei befindet. In meinem Fall befand sie sich in /opt/lampp/var/mysql/mysql.sock
  2. Starten Sie Terminal und geben Sie sudo Nautilus
    Dies startet Ihren Dateimanager mit Superuser-Rechten
  3. Navigieren Sie in Nautilus zu dem Ort, an dem Ihr mysql.sock Datei befindet sich
  4. Klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie Link erstellen
  5. Benennen Sie die Link-Datei um in mysqld.sock klicken Sie dann mit der rechten Maustaste auf die Datei und Schnitt es
  6. Aller à /var/run und erstellen Sie einen Ordner namens mysqld und geben Sie es ein
  7. Klicken Sie nun mit der rechten Maustaste und Kleister die Link-Datei
  8. Voilà! Sie haben jetzt eine mysqld.sock Datei unter /var/run/mysqld/mysqld.sock :)

33voto

Pratik Patil Punkte 3364

Sie müssen nur den MySQL-Dienst nach der Installation starten:

Für Ubuntu:

sudo service mysql start;

Für CentOS oder RHEL:

sudo service mysqld start;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X