Weiß jemand, warum sich meine /var/run/mysqld/mysqld.sock
Socket-Datei nicht auf meinem Computer befindet, wenn ich MySQL 5.1 installiere (oder neu installiere)?
Im Moment, wenn ich versuche, einen Server mit mysqld zu starten, erhalte ich Fehler wie Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
, aber das Erstellen einer leeren Datei mit diesem Namen (wie in den Ubuntu-Foren vorgeschlagen) war nicht erfolgreich.
Ich hatte sowohl Mysql als auch Postgres in Ordnung, bis ich vor einiger Zeit auf Natty umgestiegen bin. Ich habe Stunden damit verbracht, durch beide Datenbanken zu gehen, um herauszufinden, was los ist. Ich kann Postgres aufgeben, aber ich kann nicht ohne eine Arbeitskopie von MySQL arbeiten.
Der seltsamste Teil: Ich benutze Kubuntu und verstehe, dass KDE mysql verwendet, um Benutzerberechtigungen usw. zu speichern. Ich habe keine seltsamen Berechtigungsprobleme. Kann ich das so verstehen, dass (irgendwie?) MySQL tatsächlich funktioniert?
Vielleicht leben diese Socket-Dateien an einem anderen Ort in natty? Wäre es einfacher, das Betriebssystem einfach neu zu installieren? An dieser Stelle bin ich offen für alle Vorschläge, die aufhören, meine Zeit zu verschwenden.
quelle
/var/run/mysqld/mysqld.sock
erstellt. Wie @Paul sagte, müssen Sie alle Dateien entfernen, die Sie an diesem Ort abgelegt haben.Antworten:
Eine Socket-Datei enthält eigentlich keine Daten, sie transportiert sie. Es handelt sich um einen speziellen, ungewöhnlichen Dateityp, der mit speziellen Systemaufrufen / Befehlen erstellt wird. Es ist keine gewöhnliche Datei.
Es ist wie eine Pipe, mit der der Server und die Clients Anforderungen und Daten verbinden und austauschen können. Es wird auch nur lokal verwendet. Seine Bedeutung ist lediglich ein vereinbarter Treffpunkt im Dateisystem.
Wenn Sie eine einfache alte Datei erstellen und an diesem Speicherort ablegen, kann dies zu Problemen beim Erstellen des Servers führen. Dadurch wird verhindert, dass lokale Clients eine Verbindung zum Server herstellen.
Ich empfehle, alle Dateien zu entfernen, die Sie an den Speicherort gestellt haben. Die spezielle Socket-Datei wird vom Server erstellt.
quelle
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
Wenn Sie dies angeben
host=localhost
, versucht der MySQL-Client, sich mit einer Unix-Named-Pipe, für die eine.sock
Datei erforderlich ist, beim MySQL-Server anzumelden .Dies kann umgangen werden, indem host = 127.0.0.1 angegeben wird. Dadurch verwendet der MySQL-Client TCP, um eine Verbindung zum Server herzustellen.
Aus der MySQL-Dokumentation entnommen :
quelle
mysql.sock
in jeder Version von MySQL, mit der ich gearbeitet habe (zurück zu 4.0), ohne triftigen Grund verschwunden ist. In diesem Fall logge ich mich einfach so ein, benutze aber--protocol=tcp
stattdessen--port
. Wenn Sie mysql herunterfahren, sucht der Dienst nach der Socket-Datei. Somitservice mysql stop
würde das Laufen scheitern. Um die fehlenden Socket-Kopfschmerzen zu umgehen, renne ichmysqladmin -h127.0.0.1 --protocol=tcp -uroot -p shutdown
. Übrigens +1 !!!Ein Socket ist eine spezielle Pseudodatei, die zum Lesen und Schreiben von Daten und nicht zum Speichern von Daten verwendet wird.
Die Socket-Datei wird beim Starten des Dienstes erstellt und beim Beenden des Dienstes entfernt. Der Speicherort der Datei wird folgendermaßen definiert
/etc/my.cnf
:quelle
In meinem Fall hat das Ausführen
mysqld_safe
eine neuemysqld.sock
Datei erstellt.Sie werden wahrscheinlich keine Rückmeldung erhalten, aber wenn Sie Ihre Sitzung neu starten, befindet sich irgendwo eine mysqld.sock-Datei. Finde es mit
quelle
Ich hatte das gleiche Problem mit dem fehlenden mysqld.sock. Ich ging zu dem Verzeichnis, das MySQL enthielt, und zwar
/usr/bin
in meinem Fall. Dann gab ich den BefehlDas doppelte mysql ist kein Tippfehler, sondern eine Datenbank, die in einer neuen MySQL-Installation immer zur Verfügung steht. Ich weiß nicht , ob
--host
,--password
oder--port
sind erforderlich , aber da es funktionierte für mich mit diesen Parametern ich sie bin auch. Sobald MySQL gestartet war, ging ich in die Benutzertabelle und stellte das Passwort für root ein. Nach dem Start von MySQL wurde die fehlende Socket-Datei erstellt. Ich hoffe, das hilft jemandem, da ich tagelang gekämpft habe.quelle
Wenn Sie nginx php-fastcgi verwenden und einen 502 Bad Gateway- Fehler haben, müssen Sie die Konfiguration Ihres virtuellen Hosts in der nginx-Konfigurationsdatei überprüfen. Sie müssen den
fastcgi_pass
Parameter einstellen oder korrigieren. Diesfastcgi_pass
ist die Variable, um die Socket-Verbindung zwischen nginx und php CGI einzustellen.Ein weiterer Punkt ist, dass das Binär-Starterskript die folgenden (wichtigen) Einträge übersehen könnte, die geöffnet wurden mit:
nano /usr/bin/php-fastcgi
Der vollständige Inhalt meines Starterskripts / usr / bin / php-fastcgi:
quelle