Qual é a razão do host 'host_name' estar bloqueado no MySQL?

12

Quando eu uso uma senha incorreta para conectar-me ao servidor mysql, e a contagem de testes ultrapassa a max_connect_errors, e eu acho que Aborted_connectstambém surge como a contagem que eu testo, mas o host ainda não está bloqueado.

Assim é que o Aborted_connectssobre o max_connect_errorshost_name então é bloqueado?

user3157
fonte

Respostas:

8

Neste ponto, pode ser necessário executar o FLUSH HOSTS e ver se isso desbloqueia.

A documentação do MySQL diz isso sobre os FLOSH HOSTS:

  • Esvazia as tabelas de cache do host. Você deve liberar as tabelas de host se alguns de seus hosts alterarem o endereço IP ou se receber a mensagem de erro Host 'host_name' está bloqueado. Quando mais de max_connect_errors erros ocorrem sucessivamente para um determinado host durante a conexão com o servidor MySQL, o MySQL assume que algo está errado e bloqueia o host de outras solicitações de conexão. Liberar as tabelas do host permite novas tentativas de conexão do host. Consulte a Seção C.5.2.6, “Host 'host_name' está bloqueado”. Você pode iniciar o mysqld com --max_connect_errors = 999999999 para evitar esta mensagem de erro.

Por que um host deve ser bloqueado para começar?

De acordo com a documentação do MySQL :

Se você receber o seguinte erro, significa que o mysqld recebeu muitas solicitações de conexão do host 'host_name' que foram interrompidas no meio: O host 'host_name' está bloqueado devido a muitos erros de conexão. Desbloquear com 'mysqladmin flush-hosts' O número de solicitações de conexão interrompidas permitidas é determinado pelo valor da variável de sistema max_connect_errors. Depois que max_connect_errors falha as solicitações, o mysqld assume que algo está errado (por exemplo, alguém está tentando invadir) e bloqueia o host de outras conexões até você executar um comando mysqladmin flush-hosts ou emitir uma instrução FLUSH HOSTS. Consulte a Seção 5.1.3, “Variáveis ​​do sistema do servidor”.

Por padrão, o mysqld bloqueia um host após 10 erros de conexão. Você pode ajustar o valor iniciando o servidor assim:

shell> mysqld_safe --max_connect_errors=10000 &

Se você receber esta mensagem de erro para um determinado host, verifique primeiro se não há nada de errado com as conexões TCP / IP desse host. Se você está tendo problemas de rede, não adianta aumentar o valor da variável max_connect_errors.

RolandoMySQLDBA
fonte
Não parece que esses erros vão para o log de erros normal do MySQL. Existe uma maneira de ver um log de erros de conexão de bloqueio de host? Também observei o "sucessivamente" acima. Então, só precisa de uma conexão bem-sucedida no meio? Ou devo apenas fazer uma nova pergunta?
Marc L.
1

Uma causa desse bloqueio é quando uma pessoa aleatória no host decide fazer algum monitoramento do MySQL e configura um telnet para a porta MySQL no servidor remoto. Com um número suficiente de invocações de telnet, o host é bloqueado contra acesso adicional ao servidor MySQL. Ao contrário de alguns servidores, o MySQL não desbloqueia automaticamente o acesso após um período de tempo razoável: o administrador do servidor precisa bater na cabeça do MySQL.

Richard
fonte