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

9

Ich habe den Mailserver mit dovecot + postfix + mysql konfiguriert und er lief auf dem Server (Ubuntu Server) einwandfrei. Aber in der letzten Woche hat es nicht mehr richtig funktioniert. Es wird keine E-Mail gesendet. Wenn ich versuche, eine telnet localhost smtpVerbindung herzustellen, aber wenn ich die mail from:<[email protected]>Eingabetaste drücke, bleibt nichts hängen.

Nachdem /var/log/mail.logich die Datei überprüft habe, habe ich herausgefunden, dass das Problem wahrscheinlich (99%) bei Postfix liegt, wenn versucht wird, eine Verbindung zum MySQL-Server herzustellen. Wenn Sie die unten angegebene Protokolldatei sehen, können Sie sehen, dass dort steht Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2).

Nov 14 21:54:36 ns1 dovecot: dovecot: Killed with signal 15 (by pid=7731 uid=0 code=kill)
Nov 14 21:54:36 ns1 dovecot: Dovecot v1.2.9 starting up (core dumps disabled)
Nov 14 21:54:36 ns1 dovecot: auth-worker(default): mysql: Connected to localhost (mailserver)
Nov 14 21:54:44 ns1 postfix/postfix-script[7753]: refreshing the Postfix mail system
Nov 14 21:54:44 ns1 postfix/master[1670]: reload -- version 2.7.0, configuration /etc/postfix
Nov 14 21:54:52 ns1 postfix/trivial-rewrite[7759]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Nov 14 21:54:52 ns1 postfix/trivial-rewrite[7759]: fatal: mysql:/etc/postfix/mysql-virtual-alias-maps.cf(0,lock|fold_fix): table lookup problem
Nov 14 21:54:53 ns1 postfix/master[1670]: warning: process /usr/lib/postfix/trivial-rewrite pid 7759 exit status 1
Nov 14 21:54:53 ns1 postfix/cleanup[7397]: warning: problem talking to service rewrite: Connection reset by peer
Nov 14 21:54:53 ns1 postfix/master[1670]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Nov 14 21:54:53 ns1 postfix/smtpd[7071]: warning: problem talking to service rewrite: Success

Ich habe es versucht netstat -ln | grep mysqlund es kehrt zurück

unix 2 [ ACC ] STREAM LISTENING 5817 /var/run/mysqld/mysqld.sock.

Der Inhalt der /etc/postfix/mysql-virtual-alias-maps.cfDatei ist hier:

user = stevejobs
password = apple
hosts = localhost
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'

Hier habe ich versucht mich zu ändern hosts = 127.0.0.1aber es heißtwarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

Ich bin also verloren und weiß nicht, wo ich mich sonst ändern soll, um das Problem zu lösen. Jede Hilfe wäre sehr dankbar.

Danke.

BEARBEITEN 1

Wenn ich netstat -na mache, sehe ich, dass mysql weder an localhost noch an 127.0.0.1 gebunden ist. Könnte es auch das Problem sein?

bakhtiyor@ns1:~$ netstat -na | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN   
Bakhtiyor
quelle

Antworten:

6

Es scheint sehr dumm, aber ich habe das Problem gelöst. Ich hatte nicht bemerkt, dass ein Systemadministrator den 3306-Port für alle Hosts an der Firewall blockiert hatte, und konnte daher keine Verbindung zu MySQL herstellen. Nachdem ich diese Einschränkung aufgehoben hatte, konnte ich ohne Probleme eine Verbindung zu MySQL herstellen. Vielen Dank für Ihre Vorschläge und Hilfe.

Bakhtiyor
quelle
1
Wie entferne ich die Einschränkung?
Green
Ich möchte eine Verbindung über TCP herstellen, nicht über einen Socket. Wie kann ich das machen? Vielen Dank.
krisanalfa
Hallo @ Green, gibt es eine Lösung, wie man die Einschränkung aufhebt oder wie man herausfindet, ob es eine Einschränkung für Port 3306 gibt?
Sushivam
3

Ich hatte ein ähnliches Problem. Das Ändern von "hosts = localhost" in "hosts = 127.0.0.1" und das Setzen der Bindungsadresse auf dieselbe Adresse hat dies für mich behoben (die Bindungsadresse wurde aus irgendeinem Grund auf 0.0.0.0 festgelegt).

Jussi Timonen
quelle
Ich konnte die Bindungsadresse als 0.0.0.0 belassen (was für das Clustering mit galera erforderlich war) und habe einfach "host = 127.0.0.1: 3306" geändert, um die Verwendung auf TCP umzustellen. Ich habe mich dafür entschieden, anstatt den Socket wie andere in die Postfix-Chroot einzubinden.
Sean Reifschneider
3

Haben Sie versucht, eine Verbindung zum MySQL-Server herzustellen?

mysql -u username -p

Sie können auch versuchen, die Listen-Adresse in /etc/mysql/my.cnf in 127.0.0.1 zu ändern und MySQL neu zu starten

# /etc/mysql/my.cnf
bind-address = 127.0.0.1
Salem
quelle
Ich habe alles getan, was Sie gesagt haben und keine Ergebnisse
Bakhtiyor
Ich meine, ich kann eine Verbindung zu MySQL mit MySQL -u Benutzername -p
Bakhtiyor
Sollte "my.cnf" sein
jnunn
2

Ich habe gerade den gleichen Fehler auf einem der Firmencomputer erhalten.

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

Ich habe diesen Fehler auch häufig erhalten, als ich versucht habe, X-Windows-Programme über ssh auszuführen:

GConf Error: Failed to contact configuration server; 
some possible causes are that you need to enable TCP/IP networking for ORBit,
or you have stale NFS locks due to a system crash

Es stellte sich heraus, dass ich ein Root-Dateisystem hatte, das vollständig gefüllt war und keinen freien Speicherplatz hatte, sodass mein System nicht viele erforderliche Dateien schreiben konnte. Ich bekam alle möglichen Fehler, die mit vielen verschiedenen Programmen zusammenhängen. (Konnte sich nicht über GDM anmelden, das GDM-Hintergrundbild wurde schwarz, Fehler in der Gconf-Sperrdatei usw.)

Ich habe nur diesen einfachen Befehl eingegeben, um Dateien im Wert von über 400 MB in der Root-Partition zu entfernen, die nicht mehr benötigt wurden.

sudo apt-get autoremove

Das gab meinem Root-Dateisystem die nötige Atempause. Jetzt läuft alles super. Vermutlich reicht ein 10-GB-Stammverzeichnis nicht aus, um Ubuntu-Updates im Wert von über zwei Jahren zu verarbeiten.

Wenn es jemanden interessiert, läuft auf dem System Ubuntu 10.04 seit dem Erscheinen. Das System wird mindestens einmal pro Woche aktualisiert. Das heutige Datum ist der 9-6-2012, das sind also fast 2 1/2 Jahre an Updates.

Glücklicher Gecko
quelle
Wenn Ihr Problem Platz ist, schlage ich auch askubuntu.com/questions/17432/…
ecoologic
+1 für den Hinweis auf Platzprobleme - dies hat mein Problem gelöst.
Yuval
1

Was mir schließlich geholfen hat, war das Löschen (nicht Entfernen!) Alle apt-get-Pakete im Zusammenhang mit mysql, außer libmysqlclient16denen, die sich im Deinstallationsstatus befanden (nicht sicher, was das ist).

Also einfach machen:

dpkg --get-selections | grep mysql

und dann:

sudo apt-get purge <package_name>

Beginnen Sie mit common und gehen Sie dann zum Client und dann zum Server.

Gilad Shahrabani
quelle
Ich denke nicht, dass diese Antwort hilfreich ist. Problem war der blockierte 3306-Port, nicht kaputte MySQL-Pakete.
Nephente
DIESER BEFEHL ENTFERNT JEGLICHE PAKETE, DIE VONlibmysqlclientXX
krisanalfa
Wie finde ich den blockierten Port 3306?
Sushivam