¿Cuál es la razón por la cual el host 'host_name' está bloqueado en MySQL?

12

Cuando uso una contraseña incorrecta para conectarme al servidor mysql, y el recuento de prueba se supera max_connect_errors, y encuentro Aborted_connectsque también surge como el recuento que pruebo, pero el host todavía no está bloqueado.

Entonces, ¿ se bloquea el Aborted_connectssobre max_connect_errorshost_name?

usuario3157
fuente

Respuestas:

8

En este punto, es posible que deba ejecutar FLUSH HOSTS y ver si esto se desbloquea.

La documentación de MySQL dice esto acerca de FLUSH HOSTS:

  • Vacía las tablas de caché del host. Debe vaciar las tablas de host si alguno de sus hosts cambia la dirección IP o si recibe el mensaje de error Host 'host_name' está bloqueado. Cuando se producen más de max_connect_errors errores sucesivamente para un host determinado mientras se conecta al servidor MySQL, MySQL asume que algo está mal y bloquea el host de nuevas solicitudes de conexión. Vaciar las tablas del host permite más intentos de conexión desde el host. Consulte la Sección C.5.2.6, “El host 'host_name' está bloqueado”. Puede iniciar mysqld con --max_connect_errors = 999999999 para evitar este mensaje de error.

¿Por qué debería bloquearse un host para empezar?

De acuerdo con la documentación de MySQL :

Si obtiene el siguiente error, significa que mysqld ha recibido muchas solicitudes de conexión del host 'host_name' que se han interrumpido en el medio: el host 'host_name' está bloqueado debido a muchos errores de conexión. Desbloquear con 'mysqladmin flush-hosts' El número de solicitudes de conexión interrumpidas permitidas está determinado por el valor de la variable de sistema max_connect_errors. Después de que max_connect_errors falló las solicitudes, mysqld asume que algo está mal (por ejemplo, que alguien está tratando de entrar) y bloquea el host de conexiones adicionales hasta que ejecute un comando mysqladmin flush-hosts o emita una instrucción FLUSH HOSTS. Consulte la Sección 5.1.3, “Variables del sistema del servidor”.

De forma predeterminada, mysqld bloquea un host después de 10 errores de conexión. Puede ajustar el valor iniciando el servidor de esta manera:

shell> mysqld_safe --max_connect_errors=10000 &

Si recibe este mensaje de error para un host determinado, primero debe verificar que no haya ningún problema con las conexiones TCP / IP desde ese host. Si tiene problemas de red, no le conviene aumentar el valor de la variable max_connect_errors.

RolandoMySQLDBA
fuente
No parece que estos errores vayan al registro normal de errores de MySQL. ¿Hay alguna manera de ver un registro de errores de conexión de bloqueo de host? También noté el "sucesivo" anterior. Entonces, ¿solo necesita una conexión exitosa en el medio? ¿O debería hacer una nueva pregunta?
Marc L.
1

Una de las causas de este bloqueo es cuando una persona aleatoria en el host decide hacer un monitoreo de MySQL y configura un telnet para el puerto MySQL en el servidor remoto. Con una cantidad suficiente de invocaciones de telnet, el host queda bloqueado para que no pueda acceder a ese servidor MySQL. A diferencia de algunos servidores, MySQL no desbloquea automáticamente el acceso después de un período de tiempo razonable: el administrador del servidor tiene que golpear a MySQL en la cabeza.

Ricardo
fuente