mysqld.socket fehlt?

ameki

Registered User
Hallo zusammen,

nachdem ich gestern meinen Server neu gestartet habe (ohne Update) habe ich nun auf allen Seiten die an einer DB hängen diesen tollen Fehler:

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

Nun nachdem ich das Forum nach Lösungen etc durchgestöbert habe, musste ich feststellen dass nichts hilft. Nach einem locate mysqld.sock konnte ich sehen dass die Datei gar nicht vorhanden ist?!?

Auf unserem zweiten Server konnte ich sie jedoch finden. Habe dann ein update von mysql etc gemacht (soll manchmal helfen) und siehe da, immernoch das Selbe.

Server liegt bei vanager:
PHP Version: 4.3.7
SQL Version: 4.0.18

Kann mir einer sagen wie ich diese Datei neu erstellen lasse?

Danke und Gruß
Darius
 
Hallo,
lies vielleicht hier mal nach:
http://dev.mysql.com/doc/mysql/de/can-not-connect-to-server.html
Das File musst, bzw darfst du nicht erstellen, es wird beim Start des Daemons angelegt. Ist es eben nicht vorhanden, läuft der Daemon nicht. Ein Auszug der Logfiles wäre vielleicht hilfreich.

hast du versucht den Daemon manuell zu starten?
(bsplw.!)
/etc/init.d/mysqld start

Hier sind einige Gründe für das Auftreten des Can't connect to local MySQL server-Fehlers:

*

mysqld läuft nicht.
*

Sie fahren auf einem System, das MIT-pThread verwendet. Wenn Sie auf einem System fahren, das keine nativen Threads hat, benutzt mysqld das MIT-pThread-Paket. See Abschnitt 3.2.2, „Betriebssysteme, die von MySQL unterstützt werden“. Nicht alle MIT-pThread-Versionen unterstützen jedoch Unix-Sockets. Auf einem System ohne Socket-Unterstützung müssen Sie den Hostnamen immer explizit angeben, wenn Sie sich mit dem Server verbinden. Benutzen Sie diesen Befehl, um die Verbindung zum Server zu überprüfen:

shell> mysqladmin -h `hostname` version

*

Jemand hat den Unix-Socket entfernt, den mysqld benutzt (Vorgabe /tmp/mysqld.sock). Vielleicht gibt es einen cron-Job, der den MySQL-Socket entfernt (beispielsweise ein Job, der alte Dateien aus dem /tmp-Verzeichnis entfernt). Sie können mysqladmin version laufen lassen und überprüfen, dass der Socket, den mysqladmin versucht zu benutzen, tatsächlich existiert. Die Problemlösung besteht in diesem Fall darin, den cron-Job so zu ändern, dass er nicht mysqld.sock entfernt oder den Socket an andere Stelle zu platzieren. See Abschnitt A.4.5, „Wie Sie die MySQL-Socket-Datei /tmp/mysql.sock schützen oder ändern“.
*

Sie haben den mysqld-Server mit der --socket=/pfad/zu/socket-Option gestartet. Wenn Sie den Socket-Pfadnamen zum Server ändern, müssen Sie auch die MySQL-Clients darüber unterrichten. Das können Sie tun, indem Sie den Socket-Pfad als Argument an den Client übergeben. See Abschnitt A.4.5, „Wie Sie die MySQL-Socket-Datei /tmp/mysql.sock schützen oder ändern“.
*

Sie benutzen Linux und ein Thread ist gestorben (Core Dump). In diesem Fall müssen Sie den anderen mysqld-Thread killen (beispielsweise mit dem mysql_zap-Skript), bevor Sie einen neuen MySQL-Server starten können. See Abschnitt A.4.1, „Was zu tun ist, wenn MySQL andauernd abstürzt“.
*

Eventuell haben Sie keine Lese- und Schreibberechtigungen entweder für das Verzeichnis, in dem die Socket-Datei liegt, oder keine Berechtigung für die Socket-Datei selbst. In diesem Fall können Sie entweder die Berechtigung für die Datei und / oder das Verzeichnis ändern oder mysqld neu starten, so dass er ein Verzeichnis benutzt, auf das Sie Zugriff haben.

Wenn Sie die Fehlermeldung Can't connect to MySQL server on ein_hostname erhalten, können Sie folgendes probieren, um den Grund des Problems herauszufinden:

*

Überprüfen Sie, ob der Server hochgefahren ist, indem Sie telnet ihr_hostname tcp-ip-port-nummer ausführen und einige Male die Eingabetaste (RETURN) drücken. Wenn es auf diesem Port einen laufenden MySQL-Server gibt, sollten Sie eine Antwort erhalten, die die Versionsnummer des Server enthält. Wenn Sie einen Fehler wie telnet: Unable to connect to remote host: Connection refused erhalten, gibt es auf diesem Port keinen laufenden Server.
*

Versuchen Sie, sich mit dem mysqld-Daemon auf der lokalen Maschine zu verbinden und prüfen Sie den TCP/IP-Port, den mysqld laut Konfiguration benutzen soll (Variable port), mit mysqladmin variables.
*

Prüfen Sie, ob Ihr mysqld-Server nicht gestartet wurde, indem Sie die --skip-networking-Option verwenden.
 
Hallo,

erstmal danke für die Antwort. Wenn ich mysqld start mache dann sagt der

Code:
050830 13:20:17  Warning: Can't create test file /var/run/mysql/server1.lower-test
/usr/local/mysql/bin/mysqld: Can't change dir to '/var/run/mysql/' (Errcode: 2)
050830 13:20:17  Aborting

050830 13:20:17  /usr/local/mysql/bin/mysqld: Shutdown Complete


Die einzige Logfile in der was steht mit dem man arbeiten könnte wäre die mysql.err


Code:
050830 13:09:34  mysqld started
Warning: Ignoring user change to 'mysql' because the user was set to 'mysql' earlier on the command line
050830 13:09:34  Warning: Can't create test file /var/run/mysql/server1.lower-test
^G/usr/local/mysql/bin/mysqld: Can't change dir to '/var/run/mysql/' (Errcode: 2)
050830 13:09:34  Aborting

050830 13:09:34  /usr/local/mysql/bin/mysqld: Shutdown Complete

050830 13:09:34  mysqld ended

Weiss damit aber nicht viel anzufangen leider.
 
hallo Huschi

also es existierte nicht, habe es nun angelegt und wenn ich jetzt mysqld start mache kommt das:

Code:
050830 23:14:25  Can't start server : Bind on unix socket: No such file or directory
050830 23:14:25  Do you already have another mysqld server running on socket: /var/lib/mysqld/mysqld.sock ?
050830 23:14:25  Aborting

050830 23:14:25  /usr/local/mysql/bin/mysqld: Shutdown Complete

Nur ich seh keinen anderen mysqld Server der läuft.
Noch eine Idee?!?

Gruß
Darius
 
ameki said:
/var/lib/mysqld/mysqld.sock ?
Existiert das Verzeichnis in dem er die mysqld.sock anlegen will?

Ganz ehrlich: irgendwie hast Du eine verkorkste MySQL-Installation. Hast Du es evtl. selbst kompiliert? Oder ein tarball installiert?

huschi.
 
Hallo,
/var/run/mysql/server1.lower-test
^G/usr/local/mysql/bin/mysqld:

woher kommt das "^G" ? Ist das ein Copy&PAste? Dann aber schnell mal die Konfiguration nachgeschaut, ansonsten vergiss es wieder.

Achte bei dem Verzeichnis auf ausreichende Rechte für den user mysql. Lies da bitte ganz genau nach.
 
Hallo Huschi,

a das Verzeichnis existiert. Dass da was nicht stimmt weiss ich sonst hätte ich nicht um Hilfe gebeten. Habe aber nichts selbst gemacht. Hab den Server neu gestartet und dann trat der Fehler auf. Danach habe ich einiges probiertr was ich hier so im Forum gefunden habe aber daran kanns nicht liegen da der Fehler ja schon da war.

@ ElNino
Das G weiss ich auch nicht aber jetzt kommt es jedenfalls nicht mehr vielleicht war das nur beim einfügen...
Für welches Verzeichnis meinst du jetzt mit dem mysql user?
 
Logisch sorry :)

Also jetzt spruckt der mir das hier aus wenn ich den starten will:

Code:
050831 11:55:12  Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
050831 11:55:12  Aborting

050831 11:55:12  /usr/local/mysql/bin/mysqld: Shutdown Complete

Ich habe aber gar keine Tabellen oder sonstiges gelöscht?!?
 
was hast du kurz vor dem Auftauchen des Fehler gemacht?, hast du beim Update Änderungen an der Konfiguration machen lassen? (bspl. die orginal my.cnf ersetzt) schau mal nach /etc/mysql/ ob dort ein Backup der ursprünglichen my.cnf drin liegt. Hast du selbst kompiliert? Welche Distri nutzt du?

Es wäre auch von Vorteil, wenn du uns an den Zwischenschritten teilhaben lässt, also kurz erwähnst was du geändert/getan hast.
 
Last edited by a moderator:
ICh bekam beim apt-get update diesen dpgk Fehler dann habe ich dpgk --configure -a ausgeführt und dabei hat er dann meine my.cnf überschrieben.

Ich habe in dem Verzeichnis eine my.cnf und eine my.cnf_old

Habe nicht selbst kompiliert. Ich benutze von Vanager das vorgegebene Confixx/Debian Paket habe also Debian 3.0

Geändert habe ich sonst nichts ausser dass was hier erwähnt wurde:
Rechte für das Verzeichnis gesetzt und die beschriebenen Ordner angelegt.
 
ok, sichere beide my.cnf in einem anderen Ordner. Löche die my.cnf und benenne my.cnf_old nach my.cnf um. starte den mysqld und schau was er macht. welches datum hat my.cnf_old, passt das zum Updqate-zeitpunkt?
 
ok habe ich gemacht

jetzt sagt der mir bei /usr/local/mysql/bin/mysqld start

Code:
Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
050831 12:30:41  Aborting

050831 12:30:41  /usr/local/mysql/bin/mysqld: Shutdown Complete

und bei /etc/init.d/mysql status
Code:
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!
 
Da sagt der das:

Code:
Starting MySQL database server: mysqld...

Und das wars. Keine Fehlermeldung rein gar nichts :(
 
hmm? Warum? Ich kann dir gerne einen Screenshot schicken...

Er zeigt zwar nix an aber bei Status zeigt der immernoch diesen Fehler und die Seiten gehen auch net.
 
Der zeigt übrigens das bei ps aux | grep mysqld an

Code:
root      8320  0.0  0.0  1332  424 pts/0    S    12:51   0:00 grep mysqld

Heisst doch er läuft aber trotzdem krieg ich diesen Fehler bei Status und auf den Seiten...
 
Back
Top