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

Última atualização: 21/12/2020

Não posso me conectar com minha instância de banco de dados do Amazon Relational Database Service (Amazon RDS). Por que isso acontece e como posso solucionar o problema?

Descrição breve

A incapacidade de se conectar a uma instância de banco de dados do Amazon RDS pode ter várias causas raiz. Estas são algumas das razões mais comuns:

  • A instância de banco de dados do RDS está em um estado diferente de disponível e, assim, não pode aceitar conexões.
  • A fonte sendo usada para se conectar à instância de banco de dados não está autorizada no seu grupo de segurança, nas listas de controle de acesso da rede (ACLs) ou nos firewalls locais.
  • Você usou o endpoint ou nome DNS incorreto para se conectar à instância de banco de dados.
  • A instância de banco de dados multi-AZ executou um failover e a instância secundária usa uma sub-rede ou uma tabela de rotas que não permite conexões de entrada.
  • A autenticação do usuário está incorreta.

Dica: você pode usar as etapas a seguir para identificar a origem do problema de conectividade. Ou use o AWSSupport-TroubleshootConnectivityToRDS documento de automação do AWS Systems Manager para diagnosticar o problema para você. 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), mas 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 Running a simple automation workflow.

Resolução

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

Se você tiver iniciado ou reinicializado a instância de banco de dados recentemente, confirme que ela está no estado disponível no console do Amazon RDS. A depender do tamanho da instância de banco de dados, ela pode levar até 20 minutos para se tornar disponível para conexões de rede.

Se sua instância de banco de dados estiver em estado de falha, consulte Why is my Amazon RDS DB instance in a failed state?

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

Confirme que o tráfego da fonte se conectando a sua instância de banco de dados não está sendo restringido por um ou mais dos seguintes componentes:

  • Qualquer grupo de segurança da Amazon Virtual Private Cloud (Amazon VPC) associado à instância. Se necessário, adicione regras ao grupo de segurança associado à VPC que permitam o tráfego entre a fonte e a instância. 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 VPCs 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. Se a instância de banco de dados não estiver em uma VPC, talvez ela esteja usando um grupo de segurança para restringir o tráfego. Atualize seu grupo de segurança de banco de dados para permitir o tráfego da faixa de endereços IP, do grupo de segurança do Amazon EC2 ou da instância do EC2 Classic que você usa para a conexão.
  • 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 vindo 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.
  • Network ACLs. As ACLs de rede atuam como um firewall para recursos em uma sub-rede específica na VPC. Se usar ACLs na sua VPC, confirme que elas têm regras que permitem tráfego de entrada e de saída com a instância de banco de dados.
  • Firewalls de rede ou locais. Consulte seu administrador de rede para determinar se sua rede permite tráfego nas portas que a instância usa para comunicação de entrada e saída.
    Note: O Amazon RDS não aceita 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 a sua instância de banco de dados, você usa um nome DNS (endpoint) fornecido pelo console do Amazon RDS. Confirme que está usando o endpoint correto e que ele é fornecido no formato certo ao cliente usado para a conexão. Consulte a lista de tutoriais sobre conexão com mecanismos de banco de dados, incluindo instruções sobre como encontrar e usar corretamente um endpoint em diversas aplicações clientes em Conceitos básicos do Amazon RDS.

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

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

Veja uma resposta possível neste exemplo:

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

Verificar as tabelas de rotas associadas à implantação multi-AZ

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. Confirme que as sub-redes associadas a cada instância estão associadas à mesma tabela de rotas ou a tabelas semelhantes. Caso contrário, se sua instância de banco de dados primária fizer failover para uma réplica em espera que esteja associada a uma tabela de rotas diferente, o roteamento de tráfego para sua instância poderá não estar mais correto.

Para obter mais informações sobre como configurar tabelas de rotas, consulte Tabelas de rotas. Para obter informações adicionais sobre implantações multi-AZ, consulte Alta disponibilidade (Multi-AZ) para Amazon RDS.

Observação: se você puder se conectar a sua instância de banco de dados, mas receber erros de autenticação, consulte How do I reset the master user password for my Amazon RDS DB instance?

Verificar a conectividade

Verifique sua conexão executando um destes comandos:

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

Se o comando telnet ou o nc for bem-sucedido, será possível estabelecer uma conexão. Isso significa que o problema provavelmente é causado pela autenticação do usuário no banco de dados, como nome de usuário ou senha.