Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como executar hosts de liberação mysqladmin no Amazon RDS


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.