Como resolvo problemas de conexão com a minha instância do banco de dados do Amazon RDS?

Última atualização: 15/8/2022

Não consigo me conectar à instância do banco de dados do Amazon Relational Database Service (Amazon RDS).

Breve descrição

Existem várias causas raiz para não se conseguir conectar a uma instância de banco de dados do Amazon RDS. Aqui estão alguns dos motivos mais comuns:

  • A instância do banco de dados do RDS está em um estado diferente de disponível e, portanto, não pode aceitar conexões.
  • Sua fonte para se conectar à instância de banco de dados não tem acesso de autorização em seu grupo de segurança, listas de controle de acesso à rede (ACLs) ou firewalls locais.
  • O nome DNS ou o endpoint incorretos foram usados para se conectar à instância do banco de dados.
  • A instância do banco de dados multi-AZ fez failover, e a instância do banco de dados secundária usa uma sub-rede ou tabela de rotas que não permite conexões de entrada.
  • A autenticação do usuário está incorreta por um dos seguintes motivos:
    • Você está usando um nome de usuário ou senha incorretos no nível do banco de dados para acessar a instância a partir do cliente de banco de dados.
    • Você não tem as permissões de banco de dados necessárias para acessar a instância.
    • O cliente está sendo executado em uma versão incompatível com a versão do banco de dados.

Dica: você pode usar as seguintes etapas de solução de problemas para identificar a origem do problema de conectividade. Outra opção é usar o documento AWSSupport-TroubleshootConnectivityToRDS do AWS Systems Manager Automation para diagnosticar o problema. Esse documento de automação pode diagnosticar as ACLs de rede com base no endereço IP primário da instância do Amazon Elastic Compute Cloud (Amazon EC2). No entanto, portas efêmeras não são verificadas. O documento de automação também verifica os grupos de segurança com base no endereço IP primário da instância da instância do EC2, mas não verifica portas específicas. Para obter mais informações, consulte Executar uma automação.

Resolução

Confirmar que a instância de banco de dados está no estado disponível

Se você iniciou ou reinicializou recentemente sua instância de banco de dados, confirme se ela está no estado disponível no console do Amazon RDS. Dependendo do tamanho da sua instância de banco de dados, pode levar até 20 minutos para ela ficar disponível para conexões de rede.

Se a instância de banco de dados estiver em estado de falha, consulte Por que minha instância de banco de dados do Amazon RDS está em estado de falha?

Confirmar que a instância de banco de dados permite conexões

Certifique-se de que o tráfego da origem que se conecta à sua instância de banco de dados não esteja bloqueado por um ou mais dos seguintes:

  • Qualquer grupo de segurança da Amazon Virtual Private Cloud (Amazon VPC) associado à instância de banco de dados. Se necessário, adicione regras ao grupo de segurança associado à VPC que permitam o tráfego relacionado à origem dentro e fora da instância de banco de dados. Você pode especificar um endereço IP, uma faixa de endereços IP ou outro grupo de segurança da VPC. Para obter informações gerais sobre a VPC e instâncias de banco de dados, consulte Cenários para acessar uma instância de banco de dados em uma VPC.
  • Qualquer grupo de segurança de banco de dados associado à instância de banco de dados. Se a instância do banco de dados não estiver em uma VPC, talvez ela esteja usando um grupo de segurança do banco de dados para bloquear tráfego. Atualize o grupo de segurança do banco de dados para permitir tráfego do intervalo de endereços IP ou o grupo de segurança do Amazon EC2 que você usa para se conectar.
  • Conexões fora de uma VPC. Confirme que a instância de banco de dados está acessível publicamente e associada a uma sub-rede pública (por exemplo, a tabela de rotas permite acesso proveniente de um gateway da Internet). Para obter mais informações, consulte Cenários para acessar uma instância de banco de dados em uma VPC.
    Se a instância de banco de dados estiver em uma sub-rede privada, certifique-se de usar o emparelhamento de VPC ou o AWS Site-to-Site VPN para se conectar a ela com segurança. Com o Site-to-Site VPN, você configura um gateway do cliente que permite conectar a VPC à rede remota. Você pode usar o emparelhamento de VPC criando uma conexão de emparelhamento entre a VPC de origem e a VPC da instância para acessar essa instância de fora de sua VPC. Você também pode usar uma instância do Amazon EC2 como um bastion (jump) host.
  • ACLs de rede. As ACLs de rede atuam como um firewall para recursos em uma sub-rede específica em uma VPC. Se você usar ACLs na sua VPC, verifique se elas têm regras que permitem tráfego de entrada e saída de e para sua instância de banco de dados.
  • Firewalls de rede ou locais. Pergunte ao seu administrador de rede se a rede permite tráfego de e para as portas que a instância de banco de dados utiliza para comunicação de entrada e saída.
    Observação: o Amazon RDS não aceita o tráfego pelo protocolo ICMP (protocolo de mensagens de controle da Internet), incluindo ping.

Solucionar problemas potenciais de endpoint ou nome DNS

Ao se conectar à instância do banco de dados, você usa um nome DNS (endpoint) fornecido pelo console do Amazon RDS. Certifique-se de usar o endpoint correto. Além disso, forneça o endpoint no formato correto ao cliente que você usa para se conectar à instância de banco de dados. Para obter mais informações sobre conexões de mecanismos de banco de dados e como usar um endpoint em várias aplicações clientes, consulte Introdução ao Amazon RDS.

Por exemplo, use nslookup para o endpoint da instância de banco de dados de uma instância do Amazon EC2 dentro da VPC:

nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com 
Server: xx.xx.xx.xx 
Address: xx.xx.xx.xx#53

Veja o exemplo a seguir de uma resposta sem autoridade:

Name: myexampledb.xxxx.us-east-1.rds.amazonaws.com 
Address: 172.31.xx.x

Solucionar problemas no nível do banco de dados

  • Certifique-se de estar usando o nome de usuário e a senha corretos para acessar a instância a partir do cliente de banco de dados.
  • Certifique-se de que o usuário tenha as permissões de banco de dados para se conectar à instância do banco de dados.
  • Verifique se há algum controle de utilização de recursos no Amazon RDS, como contenção de CPU ou memória. Essa contenção pode levar a problemas com o estabelecimento de novas conexões com a instância.
  • Certifique-se de que a instância não tenha atingido o limite de max_connections.

Verifique as tabelas de rotas associadas à sua instância

Ao criar uma implantação multi-AZ, você inicia múltiplas réplicas de instâncias de banco de dados em diferentes zonas de disponibilidade para melhorar a tolerância da sua aplicação a falhas. Certifique-se de que as sub-redes associadas a cada instância do banco de dados estejam associadas à mesma tabela de rotas ou a tabelas semelhantes. Se sua instância de banco de dados primária fizer faiolver para uma réplica em espera associada a uma tabela de rotas diferente, o tráfego pode não ser roteado corretamente. Mesmo que esse tráfego tenha sido roteado anteriormente sem problemas, ele pode não ser mais roteado corretamente.

Para obter mais informações sobre a configuração de tabelas de rotas, consulte Configurar tabelas de rotas. Para obter informações adicionais sobre implantações multi-AZ, consulte Implantações multi-AZ para alta disponibilidade.

Observação: se você conseguir se conectar à instância do banco de dados, mas estiver recebendo erros de autenticação, consulte Como redefino a senha do usuário mestre da instância do banco de dados do RDS?

Verificar a conectividade

Verifique a conexão executando um dos seguintes comandos:

telnet <RDS endpoint> <port number>
nc -zv <RDS endpoint> <port number>

Se os comandos telnet ou nc forem bem-sucedidos, uma conexão de rede foi estabelecida. Isso significa que o problema provavelmente é causado pela autenticação do usuário no banco de dados, como nome de usuário ou senha.