Exodica Blog Otro blog de esos….

13Jan/101

MySQL colgado con conexiones “unauthenticated user”

bug_no_400Nada mejor que estar llegando al trabajo y que te avisen que hay un par de sitios caídos, esta confortable noticia me llego el otro día, u no tarde en encontrar que el problema era que un MySQL no respondía, cuando le tiro un "show processlist", me encuentro con cientos de conexiones con este mensaje "unauthenticated user", obviamente las conexiones muertas...

Lo primero que hice fue hacer un fordward de las coxiones a otra DB de emergencia, y luego reiniciar los apache para matar las conexiones creadas que quedaban en la nada, una vez con el MySQL libre, chequíe un par de cosas, mientras buscaba el por qué se habia detonado esto...

Consola

Consola

Leyendo en la pagina de MySQL (bugs.mysql.com), encuentro la solución a mi problema. Y les paso a explicar como viene la mano:

MySQL para asegurarse de que la conexión entrante tiene permisos, hace una resolución de dominio, para saber si por ejemplo juacinto@eldominio.com tiene permiso, el tema es que dejo de andar el servidor DNS que estaba configurado en /etc/resolv.conf y MySQL no tenia de donde sacar esos datos. Hay una forma de desactivar esto, que al mismo tiempo aceleraria el tiempo de respuesta de MySQL.

Como este servidor estaba en una red cerrada, y no tenía salida directa a internet asi que solo necesitaba espesificar permisos por ips de red.

Para desabilitar esta función de MySQL y acelerar las cosas, se debe arrancar el server con el parametro "--skip-name-resolv", o bien ponerlo como opcion en /etc/my.conf  (En Debian es /etc/mysql/my.conf) debajo de la directiva [mysqld], cosa que nos quede:

# The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
log = /usr/local/log/mysql.log
skip-name-resolv

Esto ya quedo arreglado, y depués de eso todo anduvo bien hasta ahora.

Recuerden que si hacen esto, y tienen permisos para juancito@dominio.com, este dejaría de andar, lo mejor es ponerlo por IP, onda:  juancito@190.12.45.110, pero si no es posible hacer esto y tienen este problema, otra buena opción va a ser definir estos dominios en el archivo /etc/hosts, al estilo:

190.12.45.110                dominio.com

Bug Reportado: http://bugs.mysql.com/bug.php?id=8945

   
Cerrar
Enviar por Correo