Em alguns casos, ao executar o MySQL no Amazon RDS (ou em outro lugar), pode ser necessário
FLUSH
todos os host
registros do MySQL. Normalmente, isso é necessário quando o erro "Host 'host_name' is blocked"
ocorre, o que impedirá conexões adicionais desse host_name
específico . O
host_name blocked
erro ocorre quando o número de max_connect_errors
especificado na configuração do MySQL é excedido, significando que um determinado host tentou se conectar muitas vezes sem sucesso. Esta é uma medida de segurança implementada pelo MySQL para evitar ataques injustificados de hosts/usuários que não possuem credenciais adequadas, mas às vezes pode ocorrer por engano e pode precisar ser resolvido liberando os hosts. O que os hosts de liberação fazem?
Com um usuário MySQL com privilégios apropriados executa um
FLUSH
instrução, o MySQL pode limpar tabelas de liberação, bloqueios e sistemas de cache internos dependendo das options
passadas . No caso de FLUSH HOSTS;
, o MySQL esvaziará o cache do host, o que efetivamente significa que o registro do MySQL de quais hosts estão atualmente ou se conectaram recentemente é redefinido, permitindo conexões adicionais desses hosts. Executando FLUSH HOST diretamente
Embora possa ser que você esteja completamente impedido de se conectar ao MySQL, em alguns casos é possível que o sistema “salve” um slot de conexão que está disponível apenas para o primário ou
root
conta. Para
Amazon RDS
, esse nome de usuário normalmente é encontrado em seu console de gerenciamento como padrão ou "Mestre". Tente se conectar ao seu servidor MySQL com este nome de usuário primário. Se você conseguir se conectar, liberar seus hosts é tão simples quanto executar o
FLUSH HOSTS;
Instrução do MySQL:FLUSH HOSTS;
Agora você deve ter limpado seu
host_name blocked
erro e ser capaz de se conectar com sua conta MySQL padrão. Descarregando hosts remotamente usando MySQLAdmin
No caso de você não conseguir se conectar ao MySQL como a conta mestra e ainda receber
blocked
erros, a próxima opção é conectar ao servidor remotamente e executar o flush
comando usando o mysqladmin
ferramenta. Para fazer isso, você precisará estar conectado a um diferente Instância ou servidor do EC2 que tem acesso ao servidor RDS que produz o erro.
Uma vez conectado, execute o seguinte comando com as opções apropriadas substituídas entre
<>
:$ mysqladmin -h <RDS_ENDPOINT_URL> -P <PORT> -u <USER> -p flush-hosts
Se for bem-sucedido, os
flush-hosts
O comando será executado conforme o esperado e agora você poderá se conectar ao MySQL normalmente. Reiniciando a instância RDS
A opção final, se tudo mais falhar, é simplesmente fazer login no painel de controle de gerenciamento do RDS e reiniciar manualmente a instância do RDS que está dando o erro. Isso redefinirá efetivamente o
hosts cache
para você, embora possa não ser ideal em circunstâncias de produção.