Ir para o conteúdo

Como soluciono problemas ao me conectar ao meu cluster de banco de dados compatível com o PostgreSQL do Aurora?

9 minuto de leitura
0

Quero solucionar problemas de conexão com meu cluster de banco de dados da edição do Amazon Aurora compatível com PostgreSQL.

Resolução

Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Verifique se você configurou os parâmetros de conexão corretos

Conclua as etapas a seguir:

  1. Abra o console do Amazon Relational Database Service (Amazon RDS).
  2. No painel de navegação, selecione Bancos de dados.
  3. Selecione seu cluster de banco de dados compatível com o PostgreSQL do Aurora.
  4. Na guia Conectividade e segurança, observe os seguintes valores:<br id=hardline_break/> Endpoint de gravador ou leitor<br id=hardline_break/> Número de porta padrão 5432
  5. Verifique se você tem o nome do banco de dados, nome de usuário e senha corretos.

Para testar sua conexão, execute o seguinte comando psql:

psql -h your-cluster-endpoint -p 5432 -U your-username -d your-database-name

Observação: substitua your-cluster-endpoint pelo endpoint do seu cluster, your-username pelo nome de usuário do seu banco de dados e your-database-name pelo nome do seu banco de dados.

Teste a conectividade da rede

Para verificar se seu cliente pode acessar o endpoint de cluster de banco de dados compatível com o PostgreSQL do Aurora, execute os seguintes comandos.

Use telnet

Em seguida, execute o seguinte comando telnet:

telnet your-cluster-endpoint 5432

Observação: substitua your-cluster-endpoint pelo endpoint do seu cluster.

Se a conexão for bem-sucedida, a saída será semelhante à seguinte:

Trying xxx.xxx.xxx.xxx...
Connected to your-cluster-endpoint.

Use netcat

Se o telnet não estiver disponível, execute o seguinte comando netcat:

nc -zv your-cluster-endpoint 5432

Observação: substitua your-cluster-endpoint pelo endpoint do seu cluster.

Se a conexão for bem-sucedida, a saída será semelhante à seguinte:

Connection to your-cluster-endpoint 5432 port [tcp/postgresql] succeeded!

Se os comandos anteriores expirarem ou falharem, você tem um problema de conectividade de rede. Verifique se você configurou as regras de entrada corretas do grupo de segurança.

Verifique as regras de entrada do seu grupo de segurança

Conclua as etapas a seguir:

  1. Abra o console do Amazon RDS.
  2. No painel de navegação, selecione Bancos de dados.
  3. Selecione seu cluster de banco de dados compatível com o PostgreSQL do Aurora.
  4. Na seção Conectividade e segurança, anote o nome do grupo de segurança em Grupos de segurança da VPC.
  5. Abra o console da Amazon Virtual Private Cloud (Amazon VPC).
  6. No painel de navegação, clique em Grupos de segurança.
  7. Selecione seu grupo de segurança.
  8. Clique em Regras de entrada.
  9. Confirme se há uma regra com as seguintes configurações:<br id=hardline_break/> Type é PostgreSQL ou Custom TCP.<br id=hardline_break/> Port é 5432.<br id=hardline_break/> Source é o endereço IP do seu cliente ou o bloco CIDR apropriado.

Para usar o console da Amazon VPC para adicionar uma regra de entrada ao seu grupo de segurança, consulte Configurar regras de grupo de segurança.

Para usar a AWS CLI para adicionar uma regra de entrada, execute o seguinte comando authorize-security-group-ingress:

aws ec2 authorize-security-group-ingress \
  --group-id your-group-id \
  --protocol tcp \
  --port 5432 \
  --cidr your-IP-address/32 \
  --region your-region

Observação: substitua your-group-id pelo ID do seu grupo de segurança, your-IP-address/32 pelo seu endereço IP ou bloco CIDR e your-region pela sua região da AWS.

Verifique as regras de entrada da ACL da sua rede VPC

Para verificar suas regras de ACL da rede, conclua as seguintes etapas:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, clique em ACLs da rede.
  3. Selecione a ACL da rede associada à sua sub-rede de banco de dados.
  4. Clique na guia Regras de entrada.
  5. Confirme se há uma regra com as seguintes configurações:<br id=hardline_break/> Type é PostgreSQL (5432) ou All Traffic.<br id=hardline_break/> Source é o intervalo de endereços IP do seu cliente ou 0.0.0.0/0.

Para adicionar uma regra de ACL da rede, consulte Etapa 2: Adicionar regras.

Verifique sua configuração de sub-rede e de roteamento

Para verificar sua configuração de sub-rede, conclua as seguintes etapas:

  1. Abra o console do Amazon RDS.
  2. No painel de navegação, selecione Bancos de dados.
  3. Selecione seu cluster de banco de dados compatível com o PostgreSQL do Aurora.
  4. Na guia Conectividade e segurança, anote o nome do grupo de sub-redes de banco de dados.
  5. Selecione o link do grupo de sub-redes.
  6. Verifique se as sub-redes estão nas Zonas de disponibilidade e na VPC corretas.

Para verificar a configuração da sua tabela de rotas, consulte Determinar a tabela de rotas para uma sub-rede.

Verifique suas permissões no nível do banco de dados

Verifique se o usuário do banco de dados tem as permissões necessárias para se conectar ao banco de dados.

Conecte-se como usuário principal

Execute o seguinte comando psql:

psql -h your-cluster-endpoint -p 5432 -U primary-username -d postgres

Observação: substitua your-cluster-endpoint pelo endpoint do seu cluster e primary-username pelo seu nome de usuário principal.

Verifique as permissões de usuário

Depois de se conectar como usuário principal, execute as seguintes consultas SQL para verificar as permissões do usuário.

Para listar todos os usuários do banco de dados, execute o seguinte comando:

SELECT usename, usesuper, usecreatedb, useconnlimit FROM pg_user ORDER BY usename;

Para verificar as permissões específicas do usuário, execute o seguinte comando:

SELECT usename, usesuper, usecreatedb, useconnlimit FROM pg_user WHERE usename = 'your-username';

Observação: substitua your-username pelo nome de usuário do usuário cujas permissões você deseja verificar.

Para listar bancos de dados e seus proprietários, execute o seguinte comando:

SELECT datname, datowner, datacl FROM pg_database WHERE datname NOT IN ('template0', 'template1');

Crie ou modifique permissões de usuário

Se o usuário não existir ou não tiver permissões suficientes, execute os comandos a seguir.

Para criar um novo usuário, execute o seguinte comando:

CREATE USER your_username WITH PASSWORD 'your_password';

Observação: substitua your_username pelo nome de usuário do usuário que você está criando e your_password por uma senha segura.

Para conceder permissão ao usuário para se conectar a um banco de dados, execute o seguinte comando:

GRANT CONNECT ON DATABASE your_database_name TO your_username;

Observação: substitua your_database_name pelo nome do seu banco de dados e your_username pelo nome de usuário do usuário ao qual você está concedendo permissão.

Para conceder permissão ao usuário para usar um esquema, execute o seguinte comando:

GRANT USAGE ON SCHEMA public TO your_username;

Observação: substitua your_username pelo nome de usuário do usuário ao qual você está concedendo permissão.

Para conceder permissão ao usuário para uma tabela, execute o seguinte comando:

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO your_username;

Observação: substitua your_username pelo nome de usuário do usuário ao qual você está concedendo permissão.

Monitore cotas de conexão

Verifique se seu cluster de banco de dados atingiu a cota máxima de conexão.

Verifique as conexões atuais

Conecte-se ao seu cluster de banco de dados e execute as seguintes consultas SQL.

Para verificar a contagem atual de conexões, execute o seguinte comando:

SELECT count(*) as current_connections FROM pg_stat_activity WHERE state = 'active';

Para verificar a configuração máxima de conexões, execute o seguinte comando:

SHOW max_connections;

Para visualizar as conexões ativas por usuário, execute o seguinte comando:

SELECT usename, count(*) as connection_count FROM pg_stat_activity GROUP BY usename ORDER BY connection_count DESC;

Modifique o parâmetro max_connections

Para modificar o parâmetro max_connections, consulte Modificar parâmetros em um grupo de parâmetros do cluster de banco de dados no Amazon Aurora.

Teste conexões SSL/TLS

O cluster compatível com o PostgreSQL do Aurora oferece suporte a conexões criptografadas. Teste as conexões criptografadas e não criptografadas.

Teste sem SSL

Para testar sua conexão sem SSL, execute o seguinte comando psql:

psql "host=your-cluster-endpoint port=5432 dbname=your-database user=your-username sslmode=disable"

Observação: substitua your-cluster-endpoint pelo endpoint do seu cluster, your-database pelo nome do seu banco de dados e your-username pelo seu nome de usuário.

Teste com SSL

Para testar sua conexão com SSL, execute o seguinte comando psql:

psql "host=your-cluster-endpoint port=5432 dbname=your-database user=your-username sslmode=require"

Observação: substitua your-cluster-endpoint.cluster pelo endpoint do seu cluster, your-database pelo nome do seu banco de dados e your-username pelo seu nome de usuário.

Baixe e use o certificado CA do RDS

Para baixar o certificado da autoridade de certificação (CA) do RDS, execute o seguinte comando wget:

wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

Para usar o certificado, execute o seguinte comando psql:

psql "host=your-cluster-endpoint port=5432 dbname=your-database user=your-username sslmode=verify-full sslrootcert=global-bundle.pem"

Observação: substitua your-cluster-endpoint pelo endpoint do seu cluster, your-database pelo nome do seu banco de dados e your-username pelo seu nome de usuário.

Solucione problemas de autenticação do banco de dados do IAM

Se você usa a autenticação de banco de dados do AWS Identity and Access Management (AWS IAM), conclua as etapas a seguir.

Gere um token de autenticação

Para gerar um token de autenticação, execute o seguinte comando generate-db-auth-token da AWS CLI:

aws rds generate-db-auth-token \
  --hostname your-cluster-endpoint \
  --port 5432 \
  --region your-region \
  --username your-iam-username

Observação: substitua your-cluster-endpoint pelo endpoint do seu cluster, your-region pela sua região e your-iam-username pelo seu nome de usuário do banco de dados do IAM.

Use a autenticação do IAM para se conectar

Execute o seguinte comando psql:

psql "host=your-cluster-endpoint port=5432 dbname=your-database user=your-iam-username password=your-generated-token"

Observação: substitua your-cluster-endpoint pelo endpoint do seu cluster, your-database pelo nome do seu banco de dados e your-iam-username pelo nome de usuário habilitado para IAM. Além disso, substitua your-generated-token pelo token que você gerou.

Verifique as permissões da política do IAM

Certifique-se de anexar a seguinte política ao usuário ou ao perfil do IAM:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds-db:connect"
      ],
      "Resource": [
        "arn:aws:rds-db:region:account-id:dbuser:cluster-resource-id/your-iam-username"
      ]
    }
  ]
}

Observação: substitua region pela sua região, account-id pelo ID da sua conta da AWS, cluster-resource-id pelo ID do recurso do cluster de banco de dados e your-iam-username pelo nome de usuário do banco de dados do IAM.

Para solucionar outros problemas com sua conexão, consulte Solucionar problemas de conexões com a sua instância RDS for PostgreSQL.

Informações relacionadas

Controle o tráfego para seus recursos da AWS usando grupos de segurança

Controlar o tráfego da sub-rede com listas de controle de acesso à rede

AWS OFICIALAtualizada há 5 meses