Fehler: 'Verbindung zum lokalen MySQL-Server über Socket nicht möglich' /var/run/mysqld/mysqld.sock '(2)' - Fehlende /var/run/mysqld/mysqld.sock


322

Mein Problem begann damit, dass ich mich bei meiner MySQL-Installation nicht mehr als Root anmelden konnte. Ich habe versucht, MySQL ohne aktivierte Passwörter auszuführen ... aber wann immer ich den Befehl ausgeführt habe

# mysqld_safe --skip-grant-tables &

Ich würde die Aufforderung nie zurückbekommen. Ich habe versucht, diese Anweisungen zu befolgen , 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 erhalte keine Aufforderung, die SQL-Befehle einzugeben, um das Kennwort zurückzusetzen.

Wenn ich es durch Drücken von CTRL+ töte 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 versuche und ihn lange genug belasse, 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 Folgendes 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 geprüft und /var/run/mysqld/mysqld.sockDatei existiert nicht. Der Ordner tut es, aber nicht die Datei.

Ich weiß auch nicht, ob das hilft oder nicht, aber ich rannte find / -name mysqldund es kam mit:

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

Ich bin neu in Linux und MySQL, daher weiß ich nicht, ob dies normal ist oder nicht. Aber ich füge diese Informationen hinzu, nur für den Fall, dass es hilft.

Ich entschied mich 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

Nach der erneuten Installation aller Pakete in derselben Reihenfolge wie oben wurde während der Installation von phpmyadmin der folgende Fehler angezeigt:

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 mysql.badin ihre jeweiligen Speicherorte umbenannt.

/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-serverund mysql-clientwieder. Ich habe jedoch festgestellt, dass ich nicht zur Eingabe eines Passworts aufgefordert werde. Soll es nicht nach einem Administratorkennwort fragen?


Ich habe das gleiche Problem. Ich habe es gerade gelöst. stackoverflow.com/questions/18150858/...
robert


gelöst, indem Sie einfach den Server neu starten und dann den MySQL-Dienst neu starten
bowpunya

@Anto Dies ist kein Duplikat. Dieser hat /var/run/mysqld/mysqld.sockgefehlt. Das Problem, das Sie verlinkt haben, hat diese Datei.
Motorbaby

Keine der Antworten hier oder anderswo, die ich finden konnte, löste mein Problem. Da es ein neues Projekt war, bin ich zu PostgreSQL gewechselt und es funktioniert einfach! :-)
James Bradbury

Antworten:


194

So finden Sie alle Socket-Dateien auf Ihrem System:

sudo find / -type s

Auf meinem MySQL-Serversystem war der Socket geöffnet /var/lib/mysql/mysql.sock

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

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

Manchmal gibt das Systemstart-Skript, das die ausführbare Befehlszeilendatei gestartet hat, ein Flag an --socket=path. Dieses Flag könnte den Speicherort my.cnf überschreiben, und dies würde dazu führen, dass ein Socket nicht dort gefunden wird, wo die Datei my.cnf angibt, dass er sein sollte. Wenn Sie dann versuchen, den mysql-Befehlszeilenclient auszuführen, liest er my.cnf, um den Socket zu finden, findet ihn jedoch nicht, da er von dem Ort abweicht, an dem der Server einen erstellt hat. Wenn Sie sich also nicht darum kümmern, wo sich der Socket befindet, sollte es funktionieren, wenn Sie die Datei my.cnf entsprechend ändern.

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

Wenn Sie ein Superuser im Linux-System sind, versuchen Sie eine der folgenden Möglichkeiten, wenn Sie die spezifische Methode Ihres MySQL-Setups nicht kennen:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Einige Systeme sind nicht so eingerichtet, dass MySQL auf elegante Weise gestoppt werden kann (oder MySQL reagiert aus irgendeinem Grund nicht), und Sie können das Beenden von MySQL erzwingen, indem Sie entweder:
    • Ein Schritt: pkill -9 mysqld
    • Zwei Schritte (am wenigsten bevorzugt):
      • Finden Sie die Prozess-ID von MySQL mit entweder pgrep mysqloderps aux | grep mysql | grep -v grep
      • Angenommen, die Prozess-ID wird mit 4969beendetkill -9 4969

Nachdem Sie dies getan haben, möchten Sie möglicherweise nach einer PID-Datei suchen /var/run/mysqld/und diese löschen

Stellen Sie sicher, dass die Berechtigungen für Ihren Socket so sind, dass jeder Benutzer, den mysqld ausführt, lesen / schreiben kann. Ein einfacher Test besteht darin, es für das vollständige Lesen / Schreiben zu öffnen und zu prüfen, ob es noch funktioniert:

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

Wenn das Problem dadurch behoben wird, können Sie die Berechtigungen und den Besitz des Sockets je nach Ihren Sicherheitseinstellungen nach Bedarf anpassen.

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


15
Bitte nicht empfehlen kill -9; Es gibt verschiedene Möglichkeiten, die ausprobiert werden sollten, bevor es dazu kommen muss.
Ignacio Vazquez-Abrams

@dot führen Sie dies in der Datei root 'find. -name mysqld.sock '. Ich habe die Socket-Datei an anderen Stellen als / var / run gesehen. Sobald Sie es gefunden haben, müssen Sie möglicherweise Ihre my.cnf-Datei bearbeiten, um zu zeigen, wo sie gefunden wird.
Ray

@ray, ich habe versucht, den ursprünglichen Befehl auf eine andere Weise auszuführen (ich habe einen Ubuntu-spezifischen Beitrag auf einer anderen Site gefunden ..). Hier sind die Befehle, die ich ausgeführt habe: "sudo service mysql stop" und "sudo mysqld --skip-grant-tables". Nachdem ich den zweiten Befehl ausgeführt habe, wird der folgende Fehler angezeigt: "InnoDB: ./ibdata1 kann nicht gesperrt werden, Fehler: 11". Ich kann diese ./ibdata1-Datei nicht finden ... InnoDB: Überprüfen Sie, ob Sie noch keinen anderen mysqld-Prozess haben
Punkt

2
@ nicht ausführen ps -aux | grep mysqldund sehen, ob andere MySQL-Prozesse ausgeführt werden
Ray

@Strahl. Ich reiße mir die Haare aus, Mann. Ich beschloss, MySQL wegzublasen und es erneut zu versuchen ... beachte meinen aktualisierten Beitrag.
Punkt

251

Versuchen Sie diesen Befehl,

sudo service mysql start

+1 my.cnf zeigte auf die richtigen Verzeichnisse, von mysql service war gestorben
wruckie

Ich habe die akzeptierte Antwort ausprobiert, konnte aber die Datei mysql.sock nicht finden. Dies hat bei mir funktioniert. Vielen Dank
Giovanne Afonso

1
Ich musstesudo service mysqld start
Gavin Miller

10
sudo apt-get install mysql-serverwenn du es noch nicht installiert hast :)
aimme

17
Wenn Sie auf dieses Problem stoßen, führen Sie diesen einfachen Befehl auf jeden Fall ZUERST aus, bevor Sie die anderen Dinge testen. Es dauert nur eine Sekunde. Wenn der Server einfach nicht ausgeführt wird und nach dem Start in Ordnung ist, bedeutet dies nur, dass dies nicht der Fall ist Kein Autostart, was dann das eigentliche zu lösende Problem wäre.
Lizardx

137

Dieser Fehler tritt aufgrund mehrerer Installationen von MySQL auf. Führen Sie den folgenden Befehl aus:

ps -A|grep mysql

Beenden Sie den Prozess mit:

sudo pkill mysql

und dann Befehl ausführen:

ps -A|grep mysqld

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

sudo pkill mysqld

Jetzt sind Sie vollständig eingestellt und führen nur die folgenden Befehle aus:

service mysql restart
mysql -u root -p

Habe wieder sehr gut funktionierendes MySQL


Hey Leute, ich bin im ganzen Web gelaufen, um das zu beheben. Mein Problem war, dass ich versuchte, Docker einzurichten. Ich wollte, dass es das MySQL-Datenverzeichnis verwendet, das zuvor von MySQL außerhalb von Docker verwendet wurde ... dieser ps-Befehl war der beste!
Michael

3
Nachdem wir fast 4+ Stunden lang im Internet gelaufen waren, funktionierte dies schließlich. Sollte die beste Antwort sein: +1:
Shivam Gaur

4
Der Job für mysql.service ist fehlgeschlagen, da der Steuerungsprozess mit dem Fehlercode beendet wurde. Weitere Informationen finden Sie unter "systemctl status mysql.service" und "journalctl -xe".
John Joe

1
Der Job für mysql.service ist fehlgeschlagen, da der Steuerungsprozess mit dem Fehlercode beendet wurde. Weitere Informationen finden Sie unter "systemctl status mysql.service" und "journalctl -xe".
Adib Aroui

Tnx, du sparst meine Zeit.
Aleksandur Atanasov

41

Die Lösung ist viel einfacher.

  1. Zuerst müssen Sie (im Terminal mit "sudo find / -type s") suchen, wo sich Ihre mysql.sockDatei befindet. In meinem Fall war es in/opt/lampp/var/mysql/mysql.sock
  2. Terminal und Problem sudo Nautilus
    starten Hiermit wird Ihr Dateimanager mit Superuser-Berechtigungen gestartet
  3. Navigieren Sie von Nautilus zu dem Ort, an dem sich Ihre mysql.sockDatei befindet
  4. Klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie Link erstellen
  5. Benennen Sie die Verknüpfungsdatei um mysqld.sockund klicken Sie dann mit der rechten Maustaste auf die Datei und schneiden Sie sie aus
  6. Gehen Sie zu /var/runund erstellen Sie einen Ordner mit dem Namen mysqldund geben Sie ihn ein
  7. Klicken Sie nun mit der rechten Maustaste und fügen Sie die Linkdatei ein
  8. Voila! Sie haben jetzt eine mysqld.sockDatei bei /var/run/mysqld/mysqld.sock:)

4
Wie finden Sie Ihre mysql.sock-Datei? Ich habe versucht, / -name 'mysql.sock' zu finden, aber es wird nichts zurückgegeben.
Matthew Lock

2
@MatthewLock Stellen Sie zunächst sicher, dass mysql ausgeführt wird (von "ps aux | grep mysql"). Andernfalls wird keine mysql.sock angezeigt. Zweitens verwenden Sie "sudo find / -type s", die Ihnen alle Sockets auf Ihrem System gibt, um mysql.sock
narengi

35
Was ist, wenn die Ausgabe von sudo find / -type skeine enthält mysql.sock?
Jeff

1
Es klappt. Aber ich habe keine Ahnung, warum diese Entwickler diesen Job in den letzten Jahren nie gemacht haben?
Yi Jiang

2
Wenn es schwierig ist, mit "find / -type s" herauszufinden, wo sich mysql.sock befindet, versuchen Sie, den Befehl "mysql_config --socket" zu verwenden. Sie können es mit sudo apt-get installieren libmysqlclient-dev
alexche8

26

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

Für Ubuntu:

sudo service mysql start;

Für CentOS oder RHEL:

sudo service mysqld start;

Überprüfen Sie zuerst dies sudo systemctl status mysql.serviceund sudo systemctl start mysql.service. Dies funktioniert für mich
Byeongin Yoon

16

Es gibt einen Fehler unter Ubuntu mit MySQL 5.6 und 5.7, var/run/mysqld/der verschwindet, wenn der MySQL-Dienst gestoppt oder neu gestartet wird. Dies verhindert, dass MySQL überhaupt ausgeführt wird. Ich habe diese Problemumgehung gefunden, die nicht perfekt ist, aber zumindest nach dem Stoppen / Neustarten ausgeführt wird:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/

danke - habe es für mich behoben, ich muss das Verzeichnis neu erstellen und den Besitz bei jedem Neustart des Dienstes zurücksetzen mysql - konnte den irgendwo offiziell gemeldeten Fehler nicht finden oder ich hätte hier einen Link gepostet :)
djoe

1
Ich habe es noch nicht versucht, aber vielleicht hilft es Ihnen: Erstellen Sie eine neue Datei /etc/tmpfiles.d/mysql.conf: # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details und d /var/run/mysqld 0755 mysql mysql - nach dem Neustart sollte mysql normal gestartet werden. Dies ist von bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823 , Kommentar 3. Wenn Sie dieses Problem mit MySQL 5.7 hatten, kommentieren Sie bitte Launchpad. Je mehr Benutzer sich mit dem Problem befassen, desto mehr Aufmerksamkeit wird es erhalten.
Motorbaby

Arbeitete für mich ... musste mysql als Benutzernamen verwenden und nicht mysqld
Evan Parsons

Das Hinzufügen einer Zeile zu /etc/tmpfiles.d/mysql.confdem Kommentar eines Motorrads hat dieses Problem für mich behoben. Auf einem Centos 7-Betriebssystem und mit mysql Ver 15.1 Distrib 10.3.11-MariaDB,.
Turrican_34

Dies hat das Problem für mich behoben.
Shikata

14

Okay, kopieren Sie einfach diese Codes und fügen Sie sie ein: Dies sollte im Terminal innerhalb eines Servers erfolgen, wenn Ihre MySQL-Datenbank nicht ordnungsgemäß installiert ist und wenn die folgende Fehlermeldung angezeigt wird: 'Verbindung zum lokalen MySQL-Server über Socket nicht möglich' / var / run / mysqld / mysqld.sock '(2)'.

Stoppen Sie MySql

sudo /etc/init.d/mysqld stop

Starten Sie es neu oder starten Sie es

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

Erstellen Sie einen Link wie diesen und geben Sie ihn an das System weiter

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

Führen Sie eine sichere Installation aus, die den gesamten Prozess zum Konfigurieren von MySQL steuert

/usr/bin/mysql_secure_installation

Ich erhalte den gleichen Can't connectFehler, wenn ich versuche, über dem Befehl auszuführen.
cjmling

Nur etwas, das ich entdeckt habe, für diejenigen, die Ubuntu betreiben. Wenn Sie mysqld mit /etc/init.d/mysqld start starten, wird dieses Problem trotzdem auftreten. Verwenden Sie stattdessen den Dienst mysql start und es wird in Ordnung sein. Wütend, aber ich habe es am Ende herausgefunden.
Adam Short

11

Ich hatte den gleichen Fehler und stellte fest, dass dies auf ein Upgrade der Pakete zurückzuführen war. Nach dem Neustart meines Systems habe ich den Fehler behoben.

Ich denke, aufgrund der Aktualisierung von SQL-Bibliotheken / -Paketen ist dieser Fehler aufgetreten. Versuchen Sie dies also, wenn Sie ein Upgrade durchführen :)


1
Ich habe dies nach der Neuinstallation (oder dem Upgrade) getan und jetzt funktioniert es. Keine Socket-Nachricht mehr. Vielen Dank!
Wraithie

8

Es gibt viele Gründe für dieses Problem, aber manchmal starten Sie einfach den MySQL-Server neu, um das Problem zu beheben.

sudo service mysql restart

7

Verwenden von XAMPP unter Ubuntu:

  1. Erstellen Sie einen Ordner namens mysqld im Verzeichnis / var / run . Sie können dies mit dem Befehl erreichen sudo mkdir /var/run/mysqld.

  2. Erstellen Sie einen symbolischen Link zur Datei mysql.sock , die beim Start vom XAMPP-Server erstellt wird. Sie können den Befehl verwenden sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

Hinweis: Die Datei mysql.sock wird beim Starten des Servers erstellt und beim Stoppen des Servers entfernt. Daher scheint der von Ihnen erstellte Link manchmal fehlerhaft zu sein, sollte jedoch funktionieren, solange Sie den Server mit einem sudo /opt/lampp/lampp startoder einem anderen Server gestartet haben meint.

  1. Starten Sie den Server, falls er noch nicht ausgeführt wird, und führen Sie das Programm erneut aus.

Viel Glück! Ich hoffe, dass Sie diesmal damit durchkommen.


@MohsinKhan gehen Sie zu localhost / phpmyadmin und importieren Sie die Datenbank von dort
Robert Odoch

6

Die Antwort des Benutzerladeschritts hat bei mir funktioniert. Manchmal muss die Datei in /etc/mysql/my.cnfZeile zum Client hinzufügen bearbeitet werden

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

Dies gibt mir:mysql: unknown variable 'Host=127.0.0.1'
Splaktar

@Splaktar: Es gibt einen Tippfehler. Hostmüssen Kleinbuchstaben sein hostund es wird funktionieren. Auch diese Lösung hat bei mir funktioniert.
Mohammad Faisal

Genial - das funktioniert für mich und meine Docker-Umgebung - ich musste nur die IP anpassen, die in meinem Fall der Docker-MySQL-Container IP 172.17.xx ist
InforMedic

6

* Fehler: 'Verbindung zum lokalen MySQL-Server über Socket nicht möglich' /var/run/mysqld/mysqld.sock '(2)'

Lösungen

schließlich deinstallieren und mysql neu installieren. ** **.

  • sudo apt-get entfernen mysql-server
  • sudo apt-get entfernen mysql-client
  • sudo apt-get entfernen mysql-common
  • sudo apt-get entfernen phpmyadmin

dann erneut installieren von

  • sudo apt-get installiere mysql-server-5.6

Nach diesem Vorgang werden 164 MB zusätzlicher Speicherplatz verwendet.

  • Möchtest du weiter machen? [J / N] J Drücken Sie JA, um die Installation abzuschließen

...... ....... .......

  • Endlich werden Sie diese Zeilen bekommen ....

    Libhtml-template-perl einrichten (2.95-1) ...

    Mysql-common-5.6 (5.6.16-1 ~ exp1) einrichten ... Trigger für libc-bin verarbeiten (2.19-0ubuntu6) Trigger für ureadahead verarbeiten (0.100.0-16) ...

  • Und dann

    root @ ubuntu1404: ~ # mysql -u root -p (für jedes Passwort, das du zuerst verwenden solltest)

  • Passwort eingeben:

  • Hinweis: Das eingegebene Passwort sollte mit dem Passwort für die Installationszeit von MySQL übereinstimmen (wie .root, System, Admin, Rahul usw.).

    Geben Sie dann ein

  • USE rahul_db (Datenbankname);

Vielen Dank.**


Bitte verbessern Sie die Antwortqualität
Mo.

Dies funktionierte bei mir aufgrund mehrerer installierter MySQL-Versionen. auch entfernen mysql-server-5.6/5.5, mysql-client-5.6/5.5. Vielen Dank!
Luuk Skeur

bekam E: Package 'mysql-server-5.6' has no installation candidate, es existiert nicht in Ubuntu 18.04
Juliocesar

6

Stellen Sie sicher, dass Ihr unzugänglicher Socket-Dateipfad mit '/var/run/mysqld/mysqld.sock' identisch ist. Andernfalls ändern Sie den Pfad wie Ihren. Stoppen Sie die mysqld

$ sudo /etc/init.d/mysqld stop

Wenn der Prozess noch läuft;

$ sudo pkill -9 mysqld

Entfernen Sie das MySQL-Verzeichnis, in dem der Socket erstellt werden soll. Für mich war es nicht erlaubt zu entfernen, also musste ich gewaltsam entfernen.

$ sudo mkdir -p /var/run/mysqld

Setzen Sie den Besitz auf das Verzeichnis

$ sudo chown mysql:mysql /var/run/mysqld

Starten Sie MySQL

$ sudo /etc/init.d/mysql start

Der Versuch, MySQL zu verbinden

$ sudo mysql -u dbuser -p

Ja, das ist die gleiche Antwort, die ich am 14. Februar 19 um 11:56 Uhr gegeben habe (siehe unten)
Ingo

Du bist ein Lebensretter.
Sahib Khan

5

Ich denke, Ihr MySQL-Server wurde nicht gestartet. Starten Sie den Server also mit einem der folgenden Befehle.

#services mysql start

oder

#/etc/init.d/mysql start

5

Vorübergehende Lösung

Vielleicht jemand, der mit diesem Problem konfrontiert ist. Ich verwende MySQL Workbench unter Ubuntu 14 und habe diesen Fehler erhalten.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Finden Sie Ihre Socket-Datei, indem Sie ausführen sudo find / -type s , in meinem Fall war es/run/mysqld/mysqld.sock

Also habe ich gerade einen Link zu dieser Datei im tmpVerzeichnis erstellt.

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

Wie Sie sehen können, befindet sich der Speicherort der Datei im /tmpOrdner, sodass sie mit Sicherheit entfernt wird. Sie können den .sockSpeicherort der Datei ändern . Siehe @ user3002884 Antwort.
Bilal

Ich weiß, ich habe gerade Ihre Antwort vervollständigt, damit andere Benutzer vorher wissen, dass die Lösung nur vorübergehend ist, wie der Ordner
Alex Burdusel

Du hast mein Leben gerettet :)
Mashpy Rahman

4

Zusätzlich können Sie finden mysqld.sockin , /var/run/mysqldwenn Sie bereits installiert haben mysql-server durchsudo apt-get install mysql-server


4

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

in /etc/my.cnfFügen Sie diese Zeilen:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

Und starten Sie den Dienst neu mit: service mysql restart

das hat bei mir funktioniert


4

Dies wurde bereits einige Male erwähnt, aber dies funktionierte sofort für mich:

Service MySQL Neustart


Interessant, wie sich dies von der Verwendung des einfachen Befehls "mysql" unterscheidet
luminol

3

In meinem Fall wurden zwei mysqld-Prozesse ausgeführt. Die optionalen Prozesse wurden mit pkill -9 mysqld beendet


Ich musste das 'sudo' hinzufügen, um den Prozess zu beenden.
Noti

3

Wenn Sie viele Datenbanken und Tabellen auf Ihrem System haben und innodb_file_per_tablein my.cnf festgelegt haben, gehen Ihrem MySQL-Server möglicherweise die geöffneten Objekte / Dateien (oder besser gesagt die Deskriptoren für diese Objekte) aus. Legen Sie eine neue maximale Anzahl fest mit

open-files-limit = 2048

und starte mysql neu. Dieser Ansatz kann hilfreich sein, wenn der Socket überhaupt nicht erstellt wird. Dies ist jedoch möglicherweise nicht das eigentliche Problem. Es liegt ein Problem zugrunde.


2

Ich hatte gerade dieses Problem unter Ubuntu 14.10

Turns, mysql-serverdie nicht mehr installiert waren (irgendwie wurde sie entfernt), aber ich konnte sie nicht einfach installieren, da 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


2

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 Port geändert. Es hat bei mir funktioniert. Sie können einen anderen Port schreiben. Beispiel 3355


2

Warum diesen Fehler bekommen?

Ich habe neue Updates von MySQL-Bibliotheken erhalten, daher habe ich mein Kubuntu-Betriebssystem aktualisiert, nachdem ich diese Fehler erhalten habe.


Befehle, die ich ausprobiert habe und wie ich sie behoben habe.

MySql-Server läuft korrekt, aber als ich versuchte, seine Spenden zu verbinden

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

Ich habe /var/run/mysqld/mysqld.sock'.dieses Verzeichnis überprüft . Meine Dateien existierten nicht.

Ich habe auch versucht, diese Befehle zu verbinden, aber bei mir nicht funktioniert.

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

Nachdem ich ungefähr 2 Stunden verschwendet hatte, fand ich die Lösung

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

Danach wurde alles für mich repariert.


Dies hat mir geholfen, das Problem zu beheben. Ich verstehe nicht, wie es mit dem Sockenproblem zusammenhängt, das ich hatte ...
Čamo

1

Ändern der hostzu127.0.0.1 für mich gearbeitet.

Bearbeiten Sie die Datei in /etc/mysql/my.cnfund fügen Sie die folgende Zeile zum Abschnitt hinzu:client

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

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

sudo service mysql start

Dies mein Freund, half mir :)
Bhargav Nanekalva

@NBhargav Ich bin so glücklich, dass Sie
Ihr

1

Ich würde auch die MySQL-Konfiguration überprüfen. Ich hatte dieses Problem mit meinem eigenen Server, war aber etwas zu voreilig und habe die innodb_buffer_pool_size für meinen Computer falsch konfiguriert.

innodb_buffer_pool_size = 4096M

Normalerweise läuft es bis 2048 einwandfrei, aber ich glaube, ich habe nicht den Speicher, der für die Unterstützung von 4 Gigs erforderlich ist.

Ich stelle mir vor, dass dies auch mit anderen MySQL-Konfigurationseinstellungen passieren könnte.


1

Ich hatte ein ähnliches Problem mit einem CentOS VPS. Wenn MySQL nicht direkt nach dem Start gestartet wird oder immer wieder abstürzt, führen Sie die folgenden Schritte aus:

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

innodb_force_recovery = X.

Ersetzen Sie X durch eine Zahl von 1 bis 6, beginnend mit 1, und erhöhen Sie dann, wenn MySQL nicht startet. Wenn Sie 4, 5 oder 6 einstellen, können Ihre Daten gelöscht werden. Seien Sie also vorsichtig und lesen Sie http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html vorher .

2) Starten Sie den MySQL-Dienst neu. Es wird nur SELECT ausgeführt, und das ist zu diesem Zeitpunkt normal.

3) Speichern Sie alle Ihre Datenbanken / Schemas nacheinander mit mysqldump. Komprimieren Sie die Speicherauszüge nicht, da Sie sie später sowieso dekomprimieren müssten.

4) Verschieben (oder löschen!) Nur die Verzeichnisse des BD in / var / lib / mysql, wobei die einzelnen Dateien im Stammverzeichnis erhalten bleiben.

5) Stoppen Sie MySQL und kommentieren Sie die in 1) hinzugefügte Zeile aus. Starten Sie MySQL.

6) Stellen Sie alle in 3) abgeladenen Bds wieder her.

Viel Glück!


1

Versuchen Sie Folgendes an einer Terminal-Eingabeaufforderung:

sudo mysql

Sobald dies möglich ist, können Sie einen neuen Benutzer erstellen und die gewünschten Berechtigungen für die spezifische Datenbank erteilen, auf die sie Zugriff benötigen.

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

Ich habe diese Informationen - ausgerechnet - auf einer Raspberry Pi- Hilfeseite herausgefunden. Hat wie ein Zauber funktioniert, nachdem Lubuntu 18.04 mich ein paar Stunden lang geärgert hat.


1

Erstellen Sie zuerst dir / var / run / mysqld

mit Befehl:

mkdir -p /var/run/mysqld

Fügen Sie dann dem Verzeichnis die richtigen Werte hinzu

chown mysql:mysql /var/run/mysqld

Nach diesem Versuch

mysql -u root

1

Ich hatte genau das gleiche Problem. Nachdem ich eine Stunde lang gekämpft hatte, fand ich einen Weg, dies zu korrigieren, ohne mysql-common, mysql-client, mysql-server neu zu installieren.

Gehen Sie zunächst zu "/ var / run / mysqld". Sie werden feststellen, dass die Datei mysql.sock nicht vorhanden ist. Entfernen Sie einfach das gesamte mysqld-Verzeichnis, erstellen Sie es neu und stellen Sie die erforderlichen Berechtigungen bereit.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

Beenden Sie jetzt den MySQL-Prozess in seiner Gesamtheit. Möglicherweise wird beim Ausführen des Befehls "/etc/init.d/mysql status" auch nach dem Herunterfahren des Dienstes "Warten auf Seitenbereinigung" angezeigt.

Verwenden Sie, um den Dienst vollständig zu schließen

# pkill -9 mysqld

Sobald der Prozess beendet ist, starten Sie ihn erneut mit

# /etc/init.d/mysql start

Und Sie werden sehen, dass es gut funktioniert! Und es wird auch kein Problem geben, es zu stoppen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.