Es kann keine Verbindung zum lokalen MySQL-Server über den Socket '/tmp/mysql.sock' hergestellt werden (2).

143

Ich habe den MySQL-Server installiert und versucht, eine Verbindung herzustellen, erhalte jedoch den folgenden Fehler:

    Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Ich habe mein Verzeichnis / tmp überprüft und es gibt keine mysql.sock. Ich kann mysql.sock nirgendwo finden. Ich habe gelesen, dass es in sein könnte

    /var/lib/mysql/mysql.sock

Aber ich habe auch dort nachgesehen und es gibt sogar kein MySQL-Verzeichnis, nur ein Postfix-Ding in / lib. Könnte mir jemand bei diesem Problem helfen?

user3344382
quelle
2
Ich arbeite an Mac OS X
user3344382
Hallo, können Sie den Befehl einfügen, mit dem Sie eine Verbindung herstellen? Haben Sie auch MySQL gestartet?
Mark Butler
@ MarkButler Ich benutze diesen Befehl: / usr / local / mysql / bin / mysql
user3344382
Richtig, es ist nur so, dass der Server nicht lief. Ich kann jedoch immer noch nicht verstehen, wo sich mysql.sock befindet. Gibt es möglicherweise andere versteckte Orte, an denen es sich möglicherweise befindet?
user3344382
Dieser Fehler ist sehr allgemein und kann verschiedene Gründe haben. Eine übersichtliche
Janac Meena

Antworten:

272

Versuchen Sie, den MySQL-Server zu starten:

mysql.server start

Casey Robinson
quelle
44
ERROR! Der Server wurde beendet, ohne die PID-Datei zu aktualisieren
bastianwegge
1
@wegginho Mögliche Lösung für Ihre Fehlermeldung, wenn Sie MySQL über Homebrew PID-Fehler auf
Casey Robinson
vergessen, MySQL-Dienste zu starten!
GeekHades
1
@ Bastianwegge versuchen, die Fehlerdatei in /usr/local/var/mysql/USERNAME.local.err zu überprüfen. In meinem Fall musste ich /tmp/mysql.sock löschen und dann mitmysql.server start
Josh Bradley
61

Ich habe die gleiche Frage nach dem Update von OS X Yosemite, nun, die Lösung ist recht einfach. Überprüfen Sie die Systemeinstellungen -> MySQL, der Status war STOP. Starten Sie es einfach neu und es funktioniert jetzt gut auf meinem Mac.

keren
quelle
1
Vielen Dank an @ tonen, so einfach, dass ich gut 45 Minuten damit verschwendet habe, Einstellungen in meiner my.cnf-Datei zu ändern, als dies die ganze Zeit das einzige Problem war.
Kandroidj
Arbeitete auch für mich danke, hatte keine Ahnung in Bezug auf DMG-Installation.
Rameshwar Vyevhare
Dies hat mir leider nicht geholfen
simhumileco
Einfach und großartig!
Desmond DAI
6
Ähm, was? Warum sollten die Systemeinstellungen von OSX eine MySQL-Option haben?
AlxVallejo
45

Für MAMP

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Von https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sock

UPDATE: Bei jedem Neustart meines Computers muss ich diesen Befehl eingeben, daher habe ich eine Verknüpfung erstellt.

Gehen Sie im Terminaltyp wie folgt vor:

~: vi ~/.profile

Hinzufügen

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

Sparen.

Im Terminaltyp:

~: ... um die .profile Konfiguration zu beschaffen.

Jetzt können Sie im Terminal einfach tippen

~: sockit
Bryan
quelle
1
Genial. Genau das Richtige, nach dem ich gesucht habe.
JoshHighland
1
Ich bin mehrmals auf diesen Beitrag zurückgekommen und er funktioniert immer.
Trey Copeland
Außerhalb von MAMP auf MySQL 5.7.1 aktualisiert und der Fehler aufgetreten. Dies hat es für mich behoben
David
Wenn Sie auf einem Mac-Buch sind und MAMP sehen, funktioniert dies
Kelrob-Dev
32

Der folgende Befehl hat mein Problem behoben:

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start
Nikesh Suwal
quelle
1
Nach 3 Stunden Suche löste dies mein Problem. Ich habe gerade MySQL über Homebrew mit installiert, brew install mysqlaber keiner der Befehle, die Homebrew mir sagte, dass ich laufen soll, funktionierte ordnungsgemäß. Dies ließ jedes Problem verschwinden ... Danke !! Was genau ist die erste Zeile, die Sie geschrieben haben? Was heißt das?
Mesqueeb
Danke, funktioniert gut!
Nirojan Selvanathan
1
Hey für mich war es: sudo chown -R _mysql: mysql / usr / local / mysql / data
Junaid Bhura
chown -R wechselt den Besitzer -R rekursiv
Hos Mercury
Eine makellose Version 10.13.1 und Homebrew haben diesen Fehler bei der Installation von Mariadb (10.2.10) verursacht. Dieser Eigentümerwechsel hat das sudo brew services start mariadbProblem behoben und funktioniert jetzt auch, um Mariadb beim Booten zu starten (nicht nur beim Anmelden). YAY! Danke dir!
Iggie
16

Nachdem ich alle Lösungen ausprobiert hatte, funktionierte es nur für mich, nachdem ich den Host angegeben hatte

mysql -u root -p -h127.0.0.1

wenn Sie nach einem Passwort fragen

Enter password:

Drücken Sie Enter

und es wird funktionieren, wenn alles wie oben in Ordnung ist.

Hos Mercury
quelle
2
Ich richte MySQL mit einem Docker-Container mithilfe von Docker für Mac ein und ordne seinen 3306-Port dem Mac zu. Ohne das hinzuzufügen -h 127.0.0.1, wird immer gefragt Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); Nach dem Hinzufügen des Arguments funktioniert es gut.
Evi Song
1
Dies liegt daran, dass beim Durchlaufen von 127.0.0.1 der Socket nicht verwendet wird, denke ich. Eher eine enge Problemumgehung.
Lucas Morgan
1
Das Laufen mysql -u root -h127.0.0.1 ohne -pFlag hat bei mir funktioniert, da ich bei der Installation von MySQL den mysql_secure_installationBefehl nie ausgeführt habe. Nach meinem Verständnis wird in diesem Fall standardmäßig kein Kennwort benötigt.
Richie Thomas
1
Lief wie am Schnürchen !
Panduka DeSilva
10

Nach stundenlangem Kampf funktionierte nur noch

sudo mysql.server start

Führen Sie dann eine sichere Installation mit durch

mysql_secure_installation 

Dann verbinden Sie sich mit der Datenbank über

mysql -uroot -p

MySQL wird über Homebrew installiert und die Version ist

Server version: 5.7.21 Homebrew

Die Angabe der Version kann hilfreich sein, da die Lösung je nach Version unterschiedlich sein kann.

Krishnadas PC
quelle
9

Nehmen Sie in Ihrer MySQL-Konfigurationsdatei, die in enthalten ist /etc/my.cnf, die folgenden Änderungen vor und starten Sie den mysqldDameon-Prozess neu

[client]
socket=/var/lib/mysql/mysql.sock

Überprüfen Sie auch diesen verwandten Thread

Über den Socket '/tmp/mysql.sock kann keine Verbindung zum lokalen MySQL-Server hergestellt werden

Rahul
quelle
Es gibt keine my.cnf-Datei im Verzeichnis / etc. Ich denke, ich kann diese Datei manuell erstellen, aber wie gesagt, es gibt kein MySQL-Verzeichnis in / var / lib. Wie kann der Socket dort sein?
user3344382
Überprüfen Sie den zugehörigen Thread, den ich gepostet habe, und ob Ihr MySQL-Server tatsächlich ausgeführt wird oder nicht.
Rahul
Ich fand die Datei in/etc/mysql/my.cnf
Devon
Wenn Sie mit /tmp/mysql.sock
Brew
8

Folgendes hat mein Problem behoben:

Überprüfen Sie, wo sich Ihr MySQL-Server befindet: netstat -nlp Wenn er TCP auflistet, verwenden Sie 127.0.0.1, während Sie eine Verbindung zur Datenbank herstellen, anstatt "localhost".

Überprüfen Sie MySQL doc hier

Umesh
quelle
Dies scheint für mich zu funktionieren und beweist, dass MySQL lebt, aber warum kann ich keine Verbindung zum lokalen Socket herstellen?
Colin D
8

Versuchen Sie das, es hat bei mir funktioniert.

sudo /usr/local/mysql/support-files/mysql.server start

Vasanth Vasu
quelle
Warum dieser Weg? während Sie den Befehl "where is mysql" (MAC OS) verwenden, der die Ausgabe /usr/local/mysql/bin/ ausgibt. Wie kann dieser Pfad in Mac identifiziert werden?
Vineeth Bhaskaran
Ja
4

Wenn Sie XAMPP unter Mac OS X verwenden und MySQL mit Homebrew installiert haben, liegt möglicherweise dieses Problem vor. Gehen Sie im XAMPP-Manager-Fenster zu Server verwalten und wählen Sie MySQL aus. Klicken Sie dann auf Konfigurieren und öffnen Sie die Konfigurationsdatei. Dort haben Sie den Socket-Dateipfad, geben den Pfad in Ihre MySQL-Host-Konfiguration ein und es sollte funktionieren.

Es ist ungefähr so:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

dann zum Beispiel in Django:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

Hoffe das hilft.

Kairo
quelle
3

Zunächst war es der Schlüssel zu wissen, wo sich das Datenverzeichnis für mich befand. /usr/local/var/mysql Hier gab es mindestens eine Datei mit der Erweiterung .err, der mein lokaler Computername vorangestellt war. Es hatte alle Informationen, die ich zur Diagnose brauchte.

Ich glaube, ich habe es vermasselt, indem ich zuerst MySQL 8 installiert habe. Meine App ist nicht damit kompatibel, daher musste ich ein Downgrade auf 5.7 durchführen

Meine Lösung, die für mich funktioniert hat, war /usr/local/etc/my.cnf

Finden Sie diese Zeile, wenn sie dort ist. Ich denke, es ist MySQL 8 verwandt:

mysqlx-bind-address = 127.0.0.1 

Entfernen Sie es, weil es in MySQL 5.7 sagt, dass es im Fehlerprotokoll nicht gefällt

Fügen Sie diese Zeile auch dort hinzu, wenn sie nicht unter der Bindeadresse vorhanden ist.

socket=/tmp/mysql.sock

Gehen Sie in das /tmpVerzeichnis und löschen Sie dort alle mysql.sock-Dateien. Beim Serverstart werden die Sockendateien neu erstellt

Löschen Sie das Datenverzeichnis mit mySQL im gestoppten Zustand. Meins war /usr/local/var/mysql. Dies ist derselbe Ort, an dem sich die Protokolle befinden

Von dort rannte ich

>mysqld --initialize

Dann fing alles an zu funktionieren ... dieser Befehl gibt Ihnen am Ende ein zufälliges Passwort. Speichern Sie dieses Passwort für den nächsten Schritt

Führen Sie dies aus, um mein eigenes Passwort zuzuweisen.

>mysql_secure_installation 

Beide

>brew services stop mysql@5.7

und

>mysql.server start

arbeiten jetzt. Hoffe das hilft. Es sind ungefähr 3 Stunden Versuch und Irrtum.

Adrian
quelle
3

Geben Sie zuerst Folgendes ein:

brew services start mysql

Dann das -:

mysql -uroot
Rudra shah
quelle
0

Ich habe viel Zeit damit verbracht, meine Django-App auf meinen Server zu stellen, und als ich sie ausführte, python manage.py migratetraf ich diese Fragen

Und!! Ich habe das eingestellt. ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock Es hat endlich funktioniert!

LittleCabbage
quelle
0

Geben Sie das Terminal wie folgt ein:

mysql.server start
Frank Cheng
quelle
0

Das Stoppen und Starten des MySQL-Servers vom Terminal aus hat mein Problem behoben. Unten finden Sie die Cmds zum Stoppen und Starten des MySQL-Servers in MacOs.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

Hinweis: Durch das Neustarten der Dienste über die Mac-Systemeinstellungen wurde das Problem auf meinem Mac nicht behoben. Versuchen Sie also, vom Terminal aus neu zu starten.

Lakshmi Narayanan
quelle
0

Wenn Sie unter einem MacOS arbeiten, ist es einfacher, zuerst in den Systemeinstellungen zu überprüfen, ob MySQL ausgeführt wird oder nicht.

Micah Lotemo
quelle
-1

Für CentOS befindet sich die Datei zum Initiieren von MySQL hier:

/etc/init.d/mysqld start
Etusm
quelle