Ich habe kürzlich versucht, MySQL mit homebrew ( brew install mysql
) zu installieren, und wenn ich versuche, es auszuführen, wird der folgende Fehler angezeigt:
FEHLER 2002 (HY000): Es kann keine Verbindung zum lokalen MySQL-Server über den Socket '/tmp/mysql.sock' (2) hergestellt werden.
Es gibt weder /tmp/mysql.sock
noch eine /var/lib/mysql.sock
.
Ich habe gesucht und keine mysql.sock
Datei gefunden.
Wie kann ich das beheben?
mysqld
, die Dinge zu überprüfen und sicherzustellen, dass MySQL beim letzten Mal ordnungsgemäß heruntergefahren wurde. Wenn das Gerät heruntergefahren wurde (z. B. wenn ein Laptop-Akku das Herunterfahren des Systems erzwingt), sollte dies behoben werden. Dann können Sie den MySQL-Server erneut starten :mysql.server start
.Antworten:
Wenn Sie den Server über zum Laufen gebracht haben
Sie sollten den Socket in /tmp/mysql.sock sehen . Das System scheint dies jedoch in /var/mysql/mysql.sock zu erwarten . Um dies zu beheben, müssen Sie einen Symlink in / var / mysql erstellen :
Das hat es für mich gelöst. Jetzt arbeitet mein phpMyAdmin glücklich mit localhost und 127.0.0.1 .
Der Kredit geht an Henry
quelle
mysql.server start
bekomme ichERROR! The server quit without updating PID file (/usr/local/var/mysql/lyahdav-C02R32HCG8WM.pid)
. Ich brauchte eine ältere Version von MySQL, die über installiert wurdebrew install [email protected]
.mysql.server start
Ihr MySQL-Server scheint nicht gestartet zu sein. Normalerweise führe ich den Befehl stop aus und starte ihn dann erneut:
Gleicher Fehler, und das funktioniert bei mir.
quelle
mysqld &
oben einen Kommentar abgegeben, aber ich denke, es würde wahrscheinlich das Gleiche tun, damysqld stop
ich mir in meinem Fall ziemlich sicher bin, dass dies auf ein unsachgemäßes Herunterfahren zurückzuführen ist.Ich hatte einige Verzeichnisse von einer anderen MySQL (8.0) -Installation übrig, die nicht entfernt wurden.
Ich habe dies folgendermaßen gelöst:
Deinstallieren Sie zuerst MySQL
Löschen Sie die Ordner / Dateien, die nicht entfernt wurden
Installieren Sie mysql neu und verknüpfen Sie es
Aktivieren und starten Sie den Dienst
quelle
Versuchen Sie, eine Verbindung mit "127.0.0.1" anstelle von "localhost" herzustellen.
quelle
1) Wenn Sie sehen können, dass "MySQL gestoppt" ist, wenn Sie den folgenden Befehl ausführen;
2) und wenn Sie in der Lage sind, MySQL mit dem folgenden Befehl zu starten;
das heisst; mysql kann manuell gestartet werden, startet jedoch nicht automatisch, wenn das Betriebssystem gestartet wird. Durch Hinzufügen von MySQL zu Diensten wird dieses Problem behoben. Dazu können Sie den folgenden Befehl ausführen.
Danach können Sie Ihr Betriebssystem neu starten und versuchen, eine Verbindung zu MySQL herzustellen, um festzustellen, ob es automatisch gestartet wurde. Ich habe das gleiche getan und erhalte keinen Fehler mehr.
Ich hoffe das hilft.
quelle
Die Datei
/tmp/mysql.sock
ist wahrscheinlich eine Named-Pipe, da sie sich in einem temporären Ordner befindet. Eine Named Pipe ist eine Special-File, die niemals dauerhaft gespeichert wird.Wenn wir zwei Programme erstellen und möchten, dass ein Programm eine Nachricht an ein anderes Programm sendet, können wir eine Textdatei erstellen. Wir haben ein Programm, das etwas in die Textdatei schreibt, und das andere Programm liest, was unser anderes Programm geschrieben hat. Das ist eine Pipe, außer dass sie die Datei nicht auf unsere Computerfestplatte schreibt und der IE die Datei nicht dauerhaft speichert (wie wir es tun, wenn wir eine Datei erstellen und speichern).
Ein Sockel ist genau das gleiche wie ein Rohr. Der Unterschied besteht darin, dass Sockets normalerweise über ein Netzwerk verwendet werden - zwischen Computern. Ein Socket sendet Informationen an einen anderen Computer oder empfängt Informationen von einem anderen Computer. Sowohl Pipes als auch Sockets verwenden eine temporäre Datei zum Teilen, damit sie "kommunizieren" können.
In diesem Fall ist es schwierig zu erkennen, welche MySQL verwendet wird. Ist aber egal.
Der Befehl
mysql.server start
sollte den 'Server' (Programm) dazu bringen, seine Endlosschleife auszuführen, die diese spezielle Datei erstellt und auf Änderungen wartet (listen
auf Schreibvorgänge).Danach kann es häufig vorkommen, dass das MySQL-Programm keine Berechtigung zum Erstellen einer Datei auf Ihrem Computer hat. Daher müssen Sie ihm möglicherweise Root-Berechtigungen erteilen
quelle
mysql.server start
,mysql.server stop
und dann wieder den Dienst über Homebrew gestartet mitbrew services start [email protected]
und Dinge verliefen reibungslos.Nach der Installation von macos mojave musste der MySQL-Ordner unter gelöscht
/usr/local/var/mysql
und dann über einebrew install mysql
andere Installation neu installiert werden, da sonst berechtigungsbezogene Dinge überall auftauchten.quelle
/usr/local/var/mysql
werden auch alle vorhandenen Datenbanken entfernt!Ich habe den gleichen Fehler erhalten und dies hat mir geholfen:
quelle
Nur um diese Antworten zu ergänzen: In meinem Fall hatte ich keinen lokalen mySQL-Server, der in einem Docker-Container ausgeführt wurde. Die Socket-Datei existiert also nicht und ist für den "mysql" -Client nicht zugänglich.
Die Sock-Datei wird von mysqld erstellt und mysql verwendet diese, um mit ihr zu kommunizieren. Wenn Ihr mySql-Server jedoch nicht lokal ausgeführt wird, ist die Sock-Datei nicht erforderlich.
Durch Angabe eines Hostnamens / einer IP wird die Sock-Datei nicht benötigt, z
quelle
Da ich einige Zeit damit verbracht habe, dieses Problem zu lösen, und bei der Suche nach diesem Fehler immer wieder auf diese Seite zurückgekehrt bin, lasse ich meine Lösung hier in der Hoffnung, dass jemand die Zeit spart, die ich verloren habe. Obwohl ich in meinem Fall Mariadb anstelle von MySQL verwende, können Sie diese Lösung möglicherweise trotzdem an Ihre Bedürfnisse anpassen.
Mein Problem
ist das gleiche, aber mein Setup ist etwas anders (Mariadb statt MySQL):
Mariadb mit Homebrew installiert
Startete den Daemon
Versucht, eine Verbindung herzustellen und hat den oben genannten Fehler erhalten
Meine Lösung
Finden Sie heraus, von welchen
my.cnf
Dateien verwendet wirdmysql
(wie in diesem Kommentar vorgeschlagen ):Überprüfen Sie, wo die Unix-Socket-Datei ausgeführt wird (fast wie hier beschrieben ):
(Vielleicht möchten Sie
grep mysql
statt Mariadb)Fügen Sie die gefundene Socket-Datei hinzu
~/.my.cnf
(erstellen Sie die Datei bei Bedarf) (vorausgesetzt, sie~/.my.cnf
wurde beim Ausführen desmysql --verbose ...
Befehls-von oben aufgeführt):Starten Sie Ihren Mariadb neu:
Danach konnte ich MySQL ausführen und bekam:
Also führe ich den Befehl stattdessen mit Superuser-Berechtigungen aus und nach Eingabe meines Passworts erhielt ich:
Anmerkungen:
Ich bin mir nicht ganz sicher, in welchen Gruppen Sie den Socket hinzufügen müssen. Zuerst hatte ich ihn [Client-Server], aber dann dachte ich, [Client] sollte ausreichen. Also habe ich es geändert und es funktioniert immer noch.
Beim Laufen
mariadb_config | grep socket
bekomme ich:--socket [/tmp/mysql.sock]
was etwas verwirrend ist, da es den Anschein hat, dass dies/usr/local/mariadb/data/mariadb.sock
der eigentliche Ort ist (zumindest auf meinem Computer)Ich frage mich, wo ich das konfigurieren kann
/usr/local/mariadb/data/mariadb.sock
,/tmp/mysql.sock
damit ich die Standardeinstellungen verwenden kann, anstatt meine bearbeiten zu müssen.my.cnf
(aber ich bin jetzt zu müde, um das herauszufinden ...)Irgendwann habe ich auch Dinge getan, die in anderen Antworten erwähnt wurden, bevor ich darauf gekommen bin.
quelle
Sie müssen ausführen
mysql_install_db
- der einfachste Weg ist, wenn Sie sich im Installationsverzeichnis befinden:Alternativ können Sie
mysql_install_db
einenbasedir
Parameter wie den folgenden eingeben:quelle
Ich hatte das gleiche Problem auf meinem Mac und löste es, indem ich die folgenden Tutorials befolgte
https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew
Vergessen Sie jedoch nicht, die alte Version zu beenden oder zu deinstallieren, bevor Sie fortfahren.
Befehle:
quelle
Nach einem Neustart konnte ich keine Verbindung zum lokalen Mariadb herstellen. Eine Suche brachte mich ebenfalls auf diese Seite und ich wollte meine Lösung mit Ihnen teilen.
Ich habe festgestellt, dass das Verzeichnis my.cnf.d in / usr / local / etc / fehlt.
Dies ist ein bekannter Fehler mit Homebrew, der dort beschrieben und behoben wird. https://github.com/Homebrew/homebrew-core/issues/36801
Schnelle Lösung: mkdir /usr/local/etc/my.cnf.d
quelle
brew update
und neu starten.brew services list
Das Ergebnis zeigte den Mariadb-Statusstarted
in Gelb. Danke für den Tipp.Beim Ausführen von mysql_secure_installation und Eingeben des neuen Kennworts erhielt ich:
Ich bemerkte, als ich aus dieser Antwort Folgendes versuchte :
Es hat nichts zurückgegeben, und ich habe das so verstanden, dass es keine .sock-Datei gab.
Daher habe ich meiner Datei my.cnf Folgendes hinzugefügt (entweder in /etc/my.cnf oder in meinem Fall in /usr/local/etc/my.cnf ).
Unter:
Unter:
Dies basierte auf diesem Beitrag .
Stoppen / starten Sie dann mysql erneut und wiederholen Sie mysql_secure_installation, wodurch ich schließlich mein neues Root-Passwort eingeben und mit anderen Setup-Einstellungen fortfahren kann.
Ich hoffe das hilft jemandem. Mann, ich hasse dieses Zeug ...
quelle
nur um diesen Thread zu vervollständigen. Daher wird MAMP (PRO) ziemlich oft verwendet
Der Weg hier ist
quelle
Ich habe MySQL manuell im Bereich Systemeinstellungen gestartet, indem ich die Datenbank initialisiert und dann gestartet habe. Dies löste mein Problem.
quelle
In meinem Fall wurde der Täter in den Protokolldateien gefunden:
Also habe ich umbenannt
ib_logfile0
, um den Fehler zu beseitigen (ich musste das gleicheib_logfile1
später tun ).quelle
Ich hatte das gleiche Problem. Nachdem ich alle diese Methoden ohne Erfolg ausprobiert hatte, tat ich Folgendes:
in einer anderen Konsole:
Ich habe folgenden Fehler gesehen:
Also habe ich die
tc.log
Erweiterung auftc.log.txt
Mariadb geändert und neu gestartetund fertig!
quelle
Das funktioniert bei mir:
Vielen Dank
quelle
Für mich hatte ich vor
mariadb
langer Zeit installiert, dann installiert[email protected]
.Wenn ich ausgeführt habe
mysql -uroot
, erhalte ich den Fehler:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Lesen Sie die Antworten:
mariadb
/usr/local/var/mysql
mysqld --initialize
Dann konnte ich
mysql -uroot -p
quelle
rm -rf / usr / local / var / mysql / ib_logfile *
quelle