Impossibile connettersi al server MySQL locale tramite socket '/var/run/mysqld/mysqld.sock' (2)


9

Ho configurato mailserver usando dovecot + postfix + mysql ed è stato eseguito bene nel server (Ubuntu Server). Ma durante la scorsa settimana ha smesso di funzionare correttamente. Non invia e-mail. Quando provo a telnet localhost smtpconnettermi con successo, ma quando lo faccio mail from:<steve@example.com>e premo Invio si blocca, non succede nulla.

Dopo aver esaminato il /var/log/mail.logfile, ho scoperto che probabilmente (99%) il problema si verifica in Postfix quando si tenta di connettersi al server MySQL. Se vedi il file di registro indicato di seguito, puoi vedere che dice 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

Ho provato netstat -ln | grep mysqle ritorna

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

Il contenuto del /etc/postfix/mysql-virtual-alias-maps.cffile è qui:

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

Qui ho provato a cambiare hosts = 127.0.0.1ma dicewarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

Quindi, mi sono perso e non so dove altro cambiare per risolvere il problema. Qualsiasi aiuto sarebbe molto apprezzato.

Grazie.

MODIFICA 1

Quando faccio netstat -na, vedo che mysql non si lega né a localhost né a 127.0.0.1. Potrebbe essere anche il problema?

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

Risposte:


6

Sembra molto stupido ma ho risolto il problema. Non avevo notato che un amministratore di sistema in qualche modo bloccava la porta 3306 per tutti gli host sul firewall, e quindi non potevo collegarmi a mysql. Dopo aver rimosso quella limitazione sono stato in grado di connettermi a mysql senza problemi. Grazie per i tuoi suggerimenti e aiuto.


1
Come rimuovere la restrizione?
Green

Voglio collegarmi via TCP, non tramite una presa. Come lo posso fare? Grazie.
krisanalfa,

Ciao @Verde, hai trovato una soluzione su come rimuovere la restrizione o piuttosto come scoprire se esiste una restrizione sulla porta 3306?
Sushivam,

3

Ho avuto un problema simile. La modifica di "hosts = localhost" in "hosts = 127.0.0.1" e l'impostazione dell'indirizzo bind sullo stesso indirizzo lo hanno risolto per me (l'indirizzo bind è stato impostato su 0.0.0.0 per qualche motivo)


Sono stato in grado di lasciare bind-address come 0.0.0.0 (che era necessario per il clustering che stavo facendo con galera) e ho appena cambiato "host = 127.0.0.1: 3306" per passare a TCP. Ho deciso su questo invece di collegare la presa nel chroot Postfix come hanno fatto altri.
Sean Reifschneider,

3

Hai provato a connetterti al server Mysql?

mysql -u username -p

Inoltre, puoi provare a cambiare l'indirizzo di ascolto in /etc/mysql/my.cnf in 127.0.0.1 e riavviare MySQL

# /etc/mysql/my.cnf
bind-address = 127.0.0.1

Ho fatto tutto ciò che hai detto e nessun risultato
Bakhtiyor,

voglio dire che posso collegarmi a mysql usando mysql -u username -p
Bakhtiyor

Dovrebbe essere "my.cnf"
jnunn

2

Stavo ricevendo lo stesso errore su uno dei computer dell'azienda.

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

Inoltre ho riscontrato questo errore molto quando ho provato a eseguire i programmi X-Windows tramite SSH:

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

Ho scoperto che avevo un file system di root completamente riempito, senza spazio libero su disco, quindi il mio sistema non poteva scrivere molti file necessari. Stavo ricevendo tutti i tipi di errori, relativi a molti programmi diversi. (Impossibile accedere tramite GDM, lo sfondo GDM è diventato nero, errori nel file di blocco gconf, ecc ...)

Tutto quello che ho fatto è stato inserire questo semplice comando per eliminare oltre 400 MB di file nella partizione di root che non erano più necessari.

sudo apt-get autoremove

Ciò ha dato al mio file system di root lo spazio necessario per respirare. Ora tutto funziona alla grande. Suppongo che una directory radice da 10 GB non sia sufficiente per gestire gli aggiornamenti di Ubuntu per oltre due anni.

Se qualcuno se ne frega, il sistema ha eseguito Ubuntu 10.04 da quando è uscito. Il sistema si aggiorna almeno una volta alla settimana. La data odierna è il 9-6-2012, quindi vale quasi 2 anni e mezzo di aggiornamenti.


quando il tuo problema è lo spazio, suggerisco anche askubuntu.com/questions/17432/…
ecoologic

+1 per sottolineare il problema dello spazio - questo ha risolto il mio problema.
yuval,

1

Ciò che alla fine mi ha aiutato è stato eliminare (non rimuovere!) Tutti i pacchetti apt-get relativi a mysql tranne libmysqlclient16 quale era in stato di disinstallazione (non sono sicuro di cosa si tratti).

Quindi, basta fare:

dpkg --get-selections | grep mysql

e poi:

sudo apt-get purge <package_name>

Inizia dal comune quindi vai al client e quindi al server.


Non penso che questa risposta sia utile. Il problema era la porta 3306 bloccata, non i pacchetti MySQL rotti.
Nephente,

QUESTO COMANDO RIMUOVERÀlibmysqlclientXX
ALCUNI

come trovare la porta bloccata 3306?
Sushivam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.