Kann mysql.sock nicht finden


81

Ich musste nur MySQL neu installieren und habe ein Problem beim Starten. Der Socket (mysql.sock) kann nicht gefunden werden. Das Problem ist, dass ich es auch nicht kann. In meinem Mac OS X 10.4-Terminal tippe ich: locate mysql.sockund komme zurück /private/tmp/mysql.sock. Es ist sinnvoll, dass die Socket-Datei an diesem Speicherort vorhanden ist, dies ist jedoch nicht der Fall.

  1. Wie finde ich die Socket-Datei?

  2. Wenn locate einen falschen Speicherort zurückgibt, muss er über eine Art Speicher und wahrscheinlich Indizes verfügen. Wie kann ich diesen Index aktualisieren?


1
/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Máxima Alekz

Antworten:


139

um den ersten Teil Ihrer Frage zu beantworten:

Lauf

% mysqladmin -p -u <user-name> variables

und überprüfen Sie die Variable 'Socket'


1
Ich würde diese Antwort komplett in die richtige ändern, wenn ich könnte. Wenn ich das nur früher gewusst hätte!
Steph Rose

49
Ran mysqladmin variables. Was ist wann zu tun error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'? :)
Alexander Wallin

Ich erhalte den gleichen Fehler wie @afEkenholm und konnte keine Lösung finden. Ich lief sudo find / -name mysql.sockaus dem Stammverzeichnis und konnte mysql.sock nirgendwo auf dem System finden. Ich habe MySQL mit der 64-Bit-dmg-Datei für Mac OS 10.7 installiert. Derzeit laufen Mavericks.
b_dubb

@b_dubb Ich bin genauso mit Ihrer Situation. Wie haben Sie Ihre Probleme gelöst?
MeganZhou

1
Um den Socket-Parameter ohne alle anderen schnell nachzuschlagen, gehen Sie wie folgt vor: mysqladmin-Variablen | grep socket
BAR

48

Dies löste mein Problem

mysql_config --socket

AKTUALISIEREN

mysql_config kann uns sagen, wo sich die Datei mysql.sock befinden soll, aber in meinem Fall war die Datei nicht vorhanden. Also habe ich my.cnf gelöscht:

sudo rm -rf /etc/my.cnf

Und dann MySQL neu gestartet:

brew services restart mysql

Die Datei wurde erstellt und MySQL läuft jetzt gut.


7
Dieser Befehl sagt Ihnen, wo sich die mysql.sock befindet, die die Frage beantwortet
Eugene Ramirez

3
Dieser Befehl sagt Ihnen nicht, wo sich die Datei befindet. Hier erfahren Sie, wo MySQL danach sucht: die Konfigurationseinstellung für das --socket.
Morksinaanab

Ich habe es nicht Vielleicht muss ls: /etc/my.cnf: No such file or directoryich es zuerst erstellen?
Abhi

Wenn Sie keine Datei haben, /etc/my.cnfversuchen Sie es mit /usr/loca/etc/my.cnf- @Abhi
rwcorbett

20

Die Socket-Datei sollte automatisch erstellt werden, wenn der MySQL-Daemon gestartet wird.

Wenn es nicht gefunden wird, existiert höchstwahrscheinlich nicht das Verzeichnis, das es enthalten soll, oder ein anderes Dateisystemproblem verhindert, dass der Socket erstellt wird.

Um herauszufinden, wo sich die Datei befinden sollte, verwenden Sie:

% mysqld --verbose --help | grep ^socket

4
Oder mysql --verbose --help | grep ^ socket
Ondrej Rafaj

1
@Ondrej das sagt dir doch, wo der Kunde denkt, dass er sucht? Der Punkt des Laufens mysqldist, dass es Ihnen sagen sollte, wo der Server es tatsächlich platziert hat!
Alnitak

Bei meiner xampp-Installation konnte ich den Daemon nicht finden, also habe ich es ohne ihn versucht und es hat funktioniert :) ... was hinter den Kulissen passiert ist, weiß ich nicht ...
Ondrej Rafaj

19

Das hat es für mich gefunden:

netstat -ln | grep mysql

Mac OS X


10

Mein Problem war auch die mysql.sock-Datei.

Während des Drupal-Installationsprozesses musste ich angeben, welche Datenbank ich verwenden möchte, aber meine Datenbank wurde nicht gefunden

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

Das System durchsucht mysql.sock, befindet sich jedoch im falschen Verzeichnis

alles was du tun musst ist es zu verlinken;)

Ich habe viel Zeit gebraucht, um alle wichtigen Informationen zu googeln, aber ich habe sogar Stunden gebraucht, um herauszufinden, wie ich mich anpassen kann, aber jetzt kann ich das Ergebnis präsentieren: D.

ps: wenn du genau sein willst, musst du dein /tmp/mysql.sock-file(wenn es sich dort auch in deinem System befindet) mit dem Verzeichnis verknüpfen, das von der php.ini (oder php.default.ini) angegeben wird, wopdo_mysql.default_socket= ...


Nachdem Sie in php.ini geändert haben, müssen pdo_mysql.default_socketSie den Webserver neu starten, damit die Änderungen geladen werden könnensudo apachectl restart
Szekelygobe

5

Ich habe den genauen Pfad erhalten mit:

netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'

Da dies nur den Pfad zurückgibt und keine Eingabe erfordert, können Sie ihn möglicherweise in einem Shell-Skript verwenden.

MySQL muss derzeit auf Ihrem Computer ausgeführt werden, damit dies funktioniert. Funktioniert auch für MariaDB.


Gute Antwort! Dies findet tatsächlich die Position des Sockets, anders als bei allen anderen Antworten.
Tyler Christian

2

Die ursprünglichen Fragen scheinen aus der Verwirrung darüber zu stammen, a) wo sich die Datei befindet und b) wo gesucht wird (und warum wir sie dort nicht finden können, wenn wir suchen oder suchen). Ich denke, Alnitaks Punkt war, dass Sie herausfinden möchten, wo es verlinkt ist - aber grep zeigt Ihnen keinen Link, oder? Die Datei lebt dort nicht, da es sich um einen Link handelt, handelt es sich nur um einen Zeiger. Sie müssen noch wissen, wo Sie den Link platzieren sollen.

Meine Sockendatei befindet sich definitiv in / tmp und der FEHLER, den ich erhalte, sucht in / var / lib / (nicht nur / var). Ich habe jetzt eine Verknüpfung zu / var und / var / lib hergestellt und erhalte immer noch den Fehler "Über den Socket 'var / lib / mysql.sock' (2) kann keine Verbindung zum lokalen MySQL-Server hergestellt werden."

Beachten Sie die (2) nach dem Fehler .... Ich habe in einem anderen Thread festgestellt, dass dies bedeutet, dass der Socket zwar versucht werden könnte, aber etwas stimmt nicht mit dem Socket selbst - um die Maschine vollständig herunterzufahren - damit Die Steckdose schließt. Dann sollte ein Neustart das Problem beheben. Ich habe es versucht, aber es hat bei mir nicht funktioniert (jetzt frage ich mich, ob ich zu schnell neu gestartet habe? Wirklich?) Vielleicht ist es eine Lösung für jemand anderen.


1
$ mysqladmin variables | grep sock

Versuchen Sie dies stattdessen. Dadurch wird das angeforderte Ergebnis ausgegeben und nicht verwandte Informationen werden entfernt.


0

Um die Datenbank des Ortes zu aktualisieren, habe ich ausgeführt

/usr/libexec/locate.updatedb

0

(Q1) Wie finde ich die Socket-Datei?

Der Standardspeicherort für die Socket-Datei ist /tmp/mysql.sock. Verwenden Sie diese Option, um die Socket-Datei für Ihr System zu finden.

mysqladmin variables | grep socket

Wenn Sie gerade MySql installiert haben, wird die Datei mysql.sock erst erstellt, wenn der Server gestartet wird. Verwenden Sie diesen Befehl, um ihn zu starten.

sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, können Sie den Benutzernamen root oder einen anderen Benutzernamen wie diesen übergeben. Das Terminal fordert Sie zur Eingabe des Passworts auf.

mysqladmin --user root --password variables | grep socket

(F2) Wie kann ich den Suchindex aktualisieren?

Aktualisieren Sie die Suchdatenbank mit diesem Befehl.

sudo /usr/libexec/locate.updatedb

0

Unter Mac OS X 10.11.6 wird der gleiche Fehler angezeigt:

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

Nachdem ich mich hier und in verwandten Fragen viel gequält und durch Ratschläge gekümmert hatte, von denen keine das Problem zu beheben schien, ging ich zurück und löschte die installierten Ordner und tat es einfach brew install mysql.

Bei den meisten Befehlen wird immer noch der gleiche Fehler angezeigt, aber dies funktioniert:

/usr/local/bin/mysqld

und kehrt zurück:

/ usr / local / bin / mysqld: Bereit für Verbindungen.

Version: '5.7.12' Socket: '/tmp/mysql.sock' Port: 3306 Homebrew


0

Ich konnte den MySQL-Socket überhaupt nicht finden, also installierte ich den MySQL-Server neu (alle Tabellen- und Phpmyadmin-Einstellungen wurden beibehalten). Hier sind die Befehle:

1) Installieren

sudo apt-get installiere mysql-server

2) Befolgen Sie die Schritte zur Terminalkonfiguration

sudo mysql_secure_installation

3) Status prüfen: (Sollte "Aktiv: aktiv (läuft)" zurückgeben)

systemctl status mysql.service


0

Leider hat in meinem Fall keines der oben genannten Verfahren funktioniert. Aber schließlich habe ich Lösungen gefunden.

Um herauszufinden, wo sich die Datei mysql.sock befindet, öffnen Sie einfach den xampp-Manager, wählen Sie MySQL aus und klicken Sie rechts auf Konfigurieren. Klicken Sie im Konfigurationsfenster auf "Conf-Datei öffnen" und suchen Sie einfach nach mysql.sock, indem Sie die Tastenkombination CMD + F drücken.

In meinem Fall wurde der Besitzer der Datei mysql.sock geändert, und ich musste sie mit: chmod root: admin mysql.sock wieder in root admin ändern

Danach wurde auf die Datenbank zugegriffen.


-4

Ich kann bei Frage 1 nicht helfen, aber um die Dateidatenbank zu aktualisieren locate, führen Sie Folgendes aus:

updatedb
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.