Conectar a uma instância de banco de dados executando o mecanismo de banco de dados do PostgreSQL - Amazon Relational Database Service

Conectar a uma instância de banco de dados executando o mecanismo de banco de dados do PostgreSQL

Depois que o Amazon RDS provisiona a sua instância de banco de dados, você pode usar qualquer aplicação cliente padrão SQL para se conectar à instância. Para que você possa se conectar à sua instância de banco de dados, ela precisa estar disponível e acessível. O que determina se você pode se conectar à instância de fora da VPC é a maneira como você criou a instância de banco de dados do Amazon RDS:

  • Se você tiver criado sua instância de banco de dados como pública, dispositivos e instâncias do Amazon EC2 fora da VPC poderão se conectar ao seu banco de dados.

  • Se você tiver criado sua instância de banco de dados como privada, somente instâncias e dispositivos do Amazon EC2 dentro da Amazon VPC poderão se conectar ao seu banco de dados.

Para se conectar à sua instância de banco de dados por meio de uma instância do EC2, você pode instalar um cliente PostgreSQL na instância do EC2. Para instalar o cliente psql no Amazon Linux 2023, execute o seguinte comando:

sudo dnf install postgresql15

Para instalar o cliente psql no Amazon Linux 2, execute o seguinte comando:

sudo amazon-linux-extras install postgresql14

Para instalar o cliente psql no Ubuntu, execute o seguinte comando:

sudo apt-get install -y postgresql14

Para verificar se sua instância de banco de dados é pública ou privada, use o AWS Management Console para visualizar a guia Connectivity & security (Conectividade e segurança) para sua instância. Em Security (Segurança), você pode encontrar o valor “Publicly accessible” (Acessível ao público), com No (Não) para privado e Yes (Sim) para público.

Para saber mais sobre diferentes configurações do Amazon RDS e da Amazon VPC e como elas afetam a acessibilidade, consulte Cenários para acessar uma instância de banco de dados em uma VPC.

Se a instância de banco de dados estiver disponível e acessível, você poderá se conectar fornecendo as seguintes informações à aplicação cliente SQL:

  • O endpoint da instância de banco de dados, que serve como o nome do host (nome DNS) da instância.

  • A porta na qual a instância de banco de dados está ouvindo. Para o PostgreSQL, a porta padrão é 5432.

  • O nome e senha do usuário da instância de banco de dados. O "nome de usuário primário" padrão do PostgreSQL é postgres.

  • O nome e a senha do banco de dados (nome do banco de dados).

Você pode obter esses detalhes usando o comando AWS Management Console, o comando describe-db-instances da AWS CLI ou a operação DescribeDBInstances da API do Amazon RDS.

Para localizar o endpoint, o número da porta e o nome do banco de dados utilizando o AWS Management Console
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. Abra o console do RDS e escolha Databases (Bancos de dados) para exibir uma lista das instâncias de banco de dados.

  3. Escolha o nome da instância de banco de dados do PostgreSQL para exibir os detalhes.

  4. Na guia Connectivity & security (Conectividade e segurança), copie o endpoint. Além disso, anote o número da porta. Você precisará do endpoint e do número da porta para conectar-se à instância de banco de dados.

    
                            Obter o endpoint do Console do RDS
  5. Na guia Configuration (Configuração), anote o nome do banco de dados. Se você tiver criado um banco de dados quando criou a instância do RDS for PostgreSQL, verá o nome listado abaixo do nome do banco de dados. Se você não tiver criado um banco de dados, o nome do banco de dados exibirá um traço (‐).

    
                            Obter o nome do banco de dados no Console do RDS

A seguir, veja dois jeitos de se conectar a uma instância de banco de dados PostgreSQL. O primeiro exemplo usa o pgAdmin, uma popular ferramenta de administração e desenvolvimento de código aberto para o PostgreSQL. O segundo exemplo usa psql, um utilitário de linha de comando que faz parte de uma instalação do PostgreSQL.

Usar pgAdmin para se conectar a uma instância de banco de dados RDS for PostgreSQL

É possível utilizar a ferramenta de código aberto pgAdmin para se conectar a uma instância de banco de dados RDS for PostgreSQL. Você pode baixar e instalar pgAdmin em http://www.pgadmin.org/ sem ter uma instância local do PostgreSQL no seu computador cliente.

Para se conectar a uma instância de banco de dados RDS for PostgreSQL utilizando pgAdmin
  1. Inicie a aplicação pgAdmin no computador cliente.

  2. Na guia Dashboard (Painel), escolha Add New Server (Adicionar novo servidor).

  3. Na caixa de diálogo Create - Server (Criar - Servidor), digite um nome na guia Geral para identificar o servidor no pgAdmin.

  4. Na guia Connection (Conexão), digite as informações a seguir de sua instância de banco de dados:

    • Para Host, digite o endpoint, por exemplo mypostgresql.c6c8dntfzzhgv0.us-east-2.rds.amazonaws.com.

    • Para Port (Porta), digite a porta designada.

    • Em Username (Nome de usuário), digite o nome de usuário que você inseriu ao criar a instância de banco de dados (se você alterou o padrão do "nome de usuário primário", postgres).

    • Para Password (Senha), digite a senha que você inseriu quando criou a instância de base de dados.

  5. Escolha Save (Salvar).

    Se você tiver quaisquer problemas para se conectar, consulte Solucionar problemas de conexões com a sua instância RDS for PostgreSQL.

  6. Para acessar um banco de dados no navegador de pgAdmin, expanda Servers (Servidores), a instância de banco de dados, e Databases (Bancos de dados). Escolha o nome do banco de dados da instância de banco de dados.

  7. Para abrir um painel onde você pode inserir comandos SQL, escolha Tools (Ferramentas), Query Tool (Ferramenta de consulta).

Usar psql para se conectar à sua instância de banco de dados RDS for PostgreSQL

É possível utilizar uma instância local do utilitário de linha de comando psql para conectar-se a uma instância de banco de dados RDS for PostgreSQL. Você precisa do PostgreSQL ou do cliente psql instalado em seu computador de cliente.

Você pode baixar o cliente PostgreSQL no site do PostgreSQL. Siga as instruções específicas da versão de seu sistema operacional para instalar o psql.

Para se conectar à sua instância de banco de dados RDS for PostgreSQL utilizando psql, você precisa fornecer as informações do host (DNS), as credenciais de acesso e o nome do banco de dados.

Use um dos formatos a seguir para se conectar a uma instância de banco de dados RDS for PostgreSQL. Ao se conectar, você terá de inserir uma senha. Para trabalhos ou scripts de lotes, use a opção --no-password. Essa opção é definida para toda a sessão.

nota

Uma tentativa de conexão com --no-password falha quando o servidor requer autenticação de senha e uma senha não está disponível de outras fontes. Para ter mais informações, consulte a documentação do psql.

Se esta é a primeira vez que você está se conectando a essa instância de banco de dados, ou se você ainda não criou um banco de dados para essa instância RDS para PostgreSQL, será possível conectar-se ao banco de dados Postgres utilizando o “nome de usuário primário” e a senha.

Para Unix, use o formato a seguir.

psql \ --host=<DB instance endpoint> \ --port=<port> \ --username=<master username> \ --password \ --dbname=<database name>

Para Windows, use o formato a seguir.

psql ^ --host=<DB instance endpoint> ^ --port=<port> ^ --username=<master username> ^ --password ^ --dbname=<database name>

Por exemplo, o comando a seguir se conecta a um banco de dados chamado mypgdb em uma instância de banco de dados PostgreSQL chamada mypostgresql usando credenciais fictícias.

psql --host=mypostgresql.c6c8mwvfdgv0.us-west-2.rds.amazonaws.com --port=5432 --username=awsuser --password --dbname=mypgdb

Conectar-se ao AWS JDBC Driver para PostgreSQL

O AWS JDBC Driver para PostgreSQL é um driver cliente desenvolvido para o Aurora PostgreSQL. O AWS JDBC Driver para PostgreSQL estende a funcionalidade do driver pgJDBC da comunidade ao habilitar recursos da AWS, como autenticação. Para ter mais informações sobre o Driver JDBC para PostgreSQL da AWS e as instruções completas para usá-lo, consulte o Repositório do GitHub do Driver JDBC para PostgreSQL da AWS.

O AWS JDBC Driver para PostgreeSQL é compatível com a autenticação do banco de dados do IAM. Para ter mais informações sobre como usar esses mecanismos de autenticação com o driver, consulte Plug-in de autenticação do AWS IAM e Plug-in do AWS Secrets Manager no repositório do AWS JDBC Driver para PostgreSQL no GitHub.

Para ter mais informações sobre a autenticação do banco de dados do IAM, consulte Autenticação do banco de dados do IAM para MariaDB, MySQL e PostgreSQL. Para ter mais informações sobre o Secrets Manager, consulte o Guia do usuário do AWS Secrets Manager Secrets Manager.

Solucionar problemas de conexões com a sua instância RDS for PostgreSQL

Erro – FATAL: o banco de dados nome não existe

Se você receber um erro como FATAL: database name does not exist ao tentar se conectar, tente usar o nome padrão do banco de dados postgres para a opção --dbname.

Erro – Não foi possível conectar-se ao servidor: a conexão expirou por exceder o tempo limite.

Se você não puder conectar-se à instância do banco de dados, o erro mais comum é Could not connect to server: Connection timed out. Se receber esse erro, verifique o seguinte:

  • Verifique se o nome do host usado é o endpoint da instância de banco de dados e se o número da porta usado está correto.

  • Certifique-se de que a acessibilidade pública da instância de banco de dados esteja definida como Yes (Sim) para permitir conexões externas. Para modificar a configuração Public access (Acesso público), consulte Modificar uma instância de banco de dados do Amazon RDS.

  • Garante que o usuário que está se conectando ao banco de dados tenha acesso CONNECT a ele. Você pode usar a consulta a seguir para fornecer acesso de conexão ao banco de dados.

    GRANT CONNECT ON DATABASE database name TO username;
  • Verifique se o grupo de segurança atribuído à instância do banco de dados tem as regras para permitir o acesso através de qualquer firewall que sua conexão possa passar. Por exemplo, se a instância de banco de dados foi criada usando a porta padrão 5432, sua empresa pode empregar regras de firewall bloqueando conexões a essa porta a partir de dispositivos externos da empresa.

    Para corrigir isso, modifique a instância de banco de dados para usar uma porta diferente. Além disso, certifique-se de que o grupo de segurança aplicado à instância do banco de dados permite conexões com a nova porta. Para modificar a configuração Database port (Porta do banco de dados), consulte Modificar uma instância de banco de dados do Amazon RDS.

  • Consulte também Erros com regras de acesso a grupos de segurança.

Erros com regras de acesso a grupos de segurança

O problema de comunicação mais comum é com as regras de acesso de grupo de segurança atribuídas à instância do banco de dados. Se você usou o grupo de segurança padrão quando criou a instância de banco de dados, é provável que o grupo de segurança não tenha as regras que lhe permitem acessar a instância.

Para a conexão funcionar, o grupo de segurança que você atribuiu à instância de banco de dados em sua criação quando o criou deve permitir o acesso à instância de banco de dados. Por exemplo, se a instância de banco de dados foi criada em uma VPC, ela deverá ter um grupo de segurança da VPC que autorize as conexões. Verifique se a instância de banco de dados foi criada usando um grupo de segurança que não autoriza conexões do dispositivo ou da instância do Amazon EC2 em que o aplicativo está sendo executado.

É possível adicionar ou editar uma regra de entrada no grupo de segurança. Em Source (Origem), selecionar My IP (Meu IP) concede acesso à instância de banco de dados do endereço IP detectado no navegador. Para ter mais informações, consulte Fornecer acesso à instância de banco de dados na VPC criando um grupo de segurança.

De forma alternativa, se a instância de banco de dados tiver sido criada fora de uma VPC, ela deverá ter um grupo de segurança de banco de dados que autorize essas conexões.

Para ter mais informações sobre grupos de segurança do Amazon RDS, consulte Controlar acesso com grupos de segurança.