No se puede conectar al servidor MySQL local a través del socket '/var/run/mysqld/mysqld.sock' (2)

9

He configurado el servidor de correo usando dovecot + postfix + mysql y estaba funcionando muy bien en el servidor (Ubuntu Server). Pero durante la semana pasada dejó de funcionar correctamente. No envía correos electrónicos. Cuando trato de telnet localhost smtpconectarme con éxito, pero cuando lo hago mail from:<[email protected]>y presiono Enter se cuelga, no pasa nada.

Después de revisar el /var/log/mail.logarchivo, descubrí que probablemente (99%) el problema está en postfix cuando intenta conectarse al servidor MySQL. Si ve el archivo de registro que figura a continuación, puede ver que 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

Lo intenté netstat -ln | grep mysqly vuelve

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

El contenido del /etc/postfix/mysql-virtual-alias-maps.cfarchivo está aquí:

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

Aquí intenté cambiar hosts = 127.0.0.1pero dicewarning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)

Entonces, estoy perdido y no sé dónde más cambiar para resolver el problema. Cualquier ayuda sería muy apreciada.

Gracias.

EDITAR 1

Cuando hago netstat -na veo que mysql no está vinculado ni a localhost ni a 127.0.0.1. ¿Podría ser el problema también?

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

Respuestas:

6

Parece muy estúpido pero he resuelto el problema. No me había dado cuenta de que un administrador del sistema de alguna manera bloqueó el puerto 3306 para todos los hosts en el firewall y, por lo tanto, no pude conectarme a mysql. Después de eliminar esa restricción, pude conectarme a mysql sin ningún problema. Gracias por sus sugerencias y ayuda.

Bakhtiyor
fuente
1
¿Cómo eliminar la restricción?
Verde
Quiero conectarme a través de TCP, no a través de un socket. ¿Cómo puedo hacer eso? Gracias.
krisanalfa
Hola @Green, ¿alguna solución que obtuviste sobre cómo eliminar la restricción o más bien cómo encontrar si hay restricción en el puerto 3306?
Sushivam
3

Tuve un problema similar. Cambiar "hosts = localhost" a "hosts = 127.0.0.1" y configurar bind-address en la misma dirección lo arregló para mí (la dirección de enlace se estableció en 0.0.0.0 por alguna razón)

Jussi Timonen
fuente
Pude dejar bind-address como 0.0.0.0 (que era necesario para el agrupamiento que estaba haciendo con galera), y simplemente cambié "host = 127.0.0.1: 3306" para cambiarlo a TCP. Decidí esto en lugar de montar el zócalo en el chroot Postfix como lo han hecho otros.
Sean Reifschneider
3

¿Has intentado conectarte al servidor Mysql?

mysql -u username -p

Además, puede intentar cambiar la dirección de escucha en /etc/mysql/my.cnf a 127.0.0.1 y reiniciar MySQL

# /etc/mysql/my.cnf
bind-address = 127.0.0.1
Salem
fuente
Hice todo lo que dijiste y no
obtuve
quiero decir que puedo conectarme a mysql usando mysql -u username -p
Bakhtiyor
Debería ser "my.cnf"
jnunn
2

Estaba recibiendo este mismo error en una de las computadoras de la compañía.

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

También recibí mucho este error cuando intenté ejecutar programas de X-windows a través de 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

Resulta que tenía un sistema de archivos raíz que estaba completamente lleno, sin espacio libre en disco, por lo que mi sistema no podía escribir muchos archivos necesarios. Estaba recibiendo todo tipo de errores, relacionados con muchos programas diferentes. (No se pudo iniciar sesión a través de GDM, el fondo de pantalla de GDM se volvió negro, los errores del archivo de bloqueo de gconf, etc.)

Todo lo que hice fue ingresar este simple comando para eliminar más de 400 MB de archivos en la partición raíz que ya no eran necesarios.

sudo apt-get autoremove

Eso le dio a mi sistema de archivos raíz el espacio de respiración que necesitaba. Ahora todo funciona muy bien. Supongo que un directorio raíz de 10 GB no es suficiente para manejar más de dos años de actualizaciones de Ubuntu.

Si a alguien le importa, el sistema ha estado ejecutando Ubuntu 10.04 desde que salió. El sistema se actualiza al menos una vez a la semana. La fecha de hoy es 9-6-2012, por lo que son casi 2 1/2 años de actualizaciones.

Gecko feliz
fuente
cuando su problema es el espacio, también sugiero askubuntu.com/questions/17432/…
ecoologic
+1 por señalar un problema de espacio: esto resolvió mi problema.
yuval
1

Lo que finalmente me ayudó fue purgar (¡no eliminar!) Todos los paquetes apt-get relacionados con mysql, excepto el libmysqlclient16que estaba en estado de desinstalación (no estoy seguro de qué es eso).

Entonces, solo haz:

dpkg --get-selections | grep mysql

y entonces:

sudo apt-get purge <package_name>

Comience desde común, luego vaya al cliente y luego al servidor.

Gilad Shahrabani
fuente
No creo que esta respuesta sea útil. El problema fue el puerto 3306 bloqueado, no los paquetes MySQL rotos.
Nephente
ESTE COMANDO ELIMINARÁ CUALQUIER PAQUETElibmysqlclientXX
DEPENDE
¿Cómo encontrar el puerto bloqueado 3306?
Sushivam