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?

3voto

amindri Punkte 1097

In meinem Fall liefen zwei mysqld-Prozesse. beendete ich die optionalen Prozesse mit pkill -9 mysqld

2voto

Heitor Punkte 635

Ich hatte ein ähnliches Problem auf einem CentOS VPS. Wenn MySQL nicht startet oder gleich nach dem Start abstürzt, versuchen Sie diese Schritte:

1) Suchen Sie die Datei my.cnf (meine befand sich in /etc/my.cnf) und fügen Sie die Zeile hinzu:

innodb_force_recovery = X

Ersetzen Sie X durch eine Zahl von 1 bis 6, beginnend mit 1 und dann hochzählend, wenn MySQL nicht startet. Die Einstellung auf 4, 5 oder 6 kann Ihre Daten löschen, also seien Sie vorsichtig und lesen Sie http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html vor.

2) Starten Sie den MySQL-Dienst neu. Nur SELECT wird ausgeführt, was zu diesem Zeitpunkt normal ist.

3) Dumpen Sie alle Ihre Datenbanken/Schemas mit mysqldump eine nach der anderen, komprimieren Sie die Dumps nicht, da Sie sie später sowieso dekomprimieren müssen.

4) Verschieben (oder löschen!) Sie nur die Verzeichnisse von bd innerhalb von /var/lib/mysql, wobei die einzelnen Dateien im Root erhalten bleiben.

5) Beenden Sie MySQL und entfernen Sie die in 1) hinzugefügte Zeile. Starten Sie MySQL.

6) Wiederherstellung aller in 3) abgelegten Daten.

Viel Glück!

2voto

Pranay Aryal Punkte 5080

Ich habe mysql in Ubuntu 16.04 deinstalliert https://askubuntu.com/questions/172514/how-do-i-uninstall-mysql

Ich habe mysql neu installiert https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04

Dies schien zu funktionieren.

2voto

JohanTux Punkte 352

Versuchen Sie Folgendes an einer Terminal-Eingabeaufforderung:

sudo mysql

Sobald Sie Zugang haben, können Sie einen neuen Benutzer anlegen und ihm die gewünschten Berechtigungen für die spezielle Datenbank gewähren, auf die er Zugriff haben soll.

Mysql 5.7 hat einige Dinge geändert und verwendet standardmäßig das auth_socket-Plugin (im Gegensatz zu mysql_native_password) für Root, um das Konto vor Hackerangriffen zu schützen. Sie können dies außer Kraft setzen, indem Sie das Plugin-Feld für Root setzen, aber wenn Sie keinen sehr guten Grund haben, sollten Sie den Schutz wahrscheinlich nicht umgehen. Besonders wenn sudo mysql ist einfacher als mysql -u root -p sowieso.

Ich habe diese Information - ausgerechnet - von einem Raspberry Pi Hilfeseite. Funktionierte wie ein Charme nach Lubuntu 18.04 ärgerte die Hölle aus mir für ein paar Stunden.

2voto

Dulith De Costa Punkte 9549

Ändern der host a 127.0.0.1 hat für mich funktioniert.

Bearbeiten Sie die Datei in /etc/mysql/my.cnf und fügen Sie die unten stehende Zeile in den Abschnitt ein: client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Wenn Sie damit fertig sind. Führen Sie den folgenden Befehl aus.

sudo service mysql 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