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?

4voto

Ani Punkte 188

Ich verwende XAMPP auf Ubuntu. Ich habe diesen Fehler beim Verbinden der Datenbank über das Terminal gefunden. Ich löse ihn ohne jegliche Konfiguration, da der Standard-Socket-Dateipfad in XAMPP in "/opt/lampp/etc/my.cnf" wie folgt geschrieben ist:

[client]
#password   = your_password
port        = 3306
socket      = /opt/lampp/var/mysql/mysql.sock

Jetzt können Sie eine Verbindung herstellen, indem Sie diesen Socket-Pfad-Parameter mit dem mysql-Befehl im Terminal angeben:

mysql -u root --socket /opt/lampp/var/mysql/mysql.sock

und das ohne jegliche Konfiguration.

Wenn Sie nicht jedes Mal den Socket-Pfad eingeben wollen, dann ändern Sie den Standardpfad in my.cnf durch "/var/run/mysqld/mysqld.sock". Erteilen Sie die Berechtigungen und starten Sie den mysql-Server neu.

Bearbeiten: Kürzlich habe ich Ubuntu 20.04 installiert und versucht, MySQL-Server zu installieren, aber mein System stürzte ab und funktionierte überhaupt nicht. Also habe ich einfach MySQL komplett entfernt und MariaDB installiert. Seine Arbeit wie ein Charme ohne Probleme.

4voto

omfaer Punkte 158

Meine Lösung;

Ubuntu 18.04 (WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/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

Ich habe den Anschluss geändert. Bei mir hat es funktioniert. Sie können einen anderen Port schreiben. Beispiel 3355

4voto

spencer Punkte 394

Finden Sie mysqld.sock en /var/run/mysqld wenn Sie bereits installiert haben mysql-server von sudo apt-get install mysql-server

4voto

Dew Punkte 97

Ich hatte gerade dieses Problem auf Ubuntu 14.10

Schaltet das mysql-server war nicht mehr installiert (irgendwie war es entfernt worden), aber ich konnte es nicht einfach installieren, weil es einige kaputte Pakete und Abhängigkeitsprobleme/-konflikte gab.

Am Ende musste ich mysql neu installieren

sudo apt-get remove mysql-client
sudo apt-get install mysql-server

3voto

knb Punkte 8822

Wenn Sie viele Datenbanken und Tabellen in Ihrem System haben, und wenn Sie innodb_file_per_table in my.cnf gesetzt ist, hat Ihr Mysql-Server möglicherweise nicht mehr genügend geöffnete Objekte/Dateien (oder vielmehr die Deskriptoren für diese Objekte) Setzen Sie eine neue Maximalzahl mit

open-files-limit = 2048

und starten Sie mysql neu. Dieser Ansatz könnte helfen, wenn der Socket überhaupt nicht erstellt wird, aber in Wirklichkeit ist dies vielleicht nicht das eigentliche Problem, sondern es gibt ein zugrunde liegendes Problem.

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