

# Conectar a uma instância de banco de dados executando o mecanismo de banco de dados do PostgreSQL
<a name="USER_ConnectToPostgreSQLInstance"></a>

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 verificar se sua instância de banco de dados é pública ou privada, use o Console de gerenciamento da AWS 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](USER_VPC.Scenarios.md). 

**Contents**
+ [Instalar o cliente psql](#install-psql)
+ [Localizar as informações de conexão para uma instância de banco de dados do RDS para PostgreSQL](#postgresql-endpoint)
+ [Usar pgAdmin para se conectar a uma instância de banco de dados RDS for PostgreSQL](USER_ConnectToPostgreSQLInstance.pgAdmin.md)
+ [Usar psql para se conectar à sua instância de banco de dados RDS for PostgreSQL](USER_ConnectToPostgreSQLInstance.psql.md)
+ [Conectar-se ao RDS para PostgreSQL com o driver JDBC da Amazon Web Services (AWS)](PostgreSQL.Connecting.JDBCDriver.md)
+ [Conectar-se ao RDS para PostgreSQL com o driver Python da Amazon Web Services (AWS)](PostgreSQL.Connecting.PythonDriver.md)
+ [Solucionar problemas de conexões com a sua instância RDS for PostgreSQL](USER_ConnectToPostgreSQLInstance.Troubleshooting.md)
  + [Erro – FATAL: o banco de dados *nome* não existe](USER_ConnectToPostgreSQLInstance.Troubleshooting.md#USER_ConnectToPostgreSQLInstance.Troubleshooting-DBname)
  + [Erro – Não foi possível conectar-se ao servidor: a conexão expirou por exceder o tempo limite.](USER_ConnectToPostgreSQLInstance.Troubleshooting.md#USER_ConnectToPostgreSQLInstance.Troubleshooting-timeout)
  + [Erros com regras de acesso a grupos de segurança](USER_ConnectToPostgreSQLInstance.Troubleshooting.md#USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules)

## Instalar o cliente psql
<a name="install-psql"></a>

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 a versão mais recente do cliente psql no Amazon Linux 2023, execute o seguinte comando: 

```
sudo dnf install postgresql<version number>
```

Para instalar a versão mais recente do cliente psql no Amazon Linux 2, execute o seguinte comando:

```
sudo yum install -y postgresql
```

Para instalar a versão mais recente do cliente psql no Ubuntu, execute o seguinte comando:

```
sudo apt install -y postgresql-client
```

## Localizar as informações de conexão para uma instância de banco de dados do RDS para PostgreSQL
<a name="postgresql-endpoint"></a>

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 Console de gerenciamento da AWS, o comando [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) da AWS CLI ou a operação [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) da API do Amazon RDS. 

**Para localizar o endpoint, o número da porta e o nome do banco de dados utilizando o Console de gerenciamento da AWS**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

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

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

1. 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\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/PostgreSQL-endpoint.png)

1. 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\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/PostgreSQL-db-name.png)

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
<a name="USER_ConnectToPostgreSQLInstance.pgAdmin"></a>

É 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/](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. 

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

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

1. 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.  
![\[Digite a senha que você inseriu quando criou a instância de base de dados\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/Postgres-Connect01.png)

1. Escolha **Salvar**. 

   Se você tiver quaisquer problemas para se conectar, consulte [Solucionar problemas de conexões com a sua instância RDS for PostgreSQL](USER_ConnectToPostgreSQLInstance.Troubleshooting.md). 

1. 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.  
![\[Escolha o nome do banco de dados da instância de banco de dados no navegador pgAdmin.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/Postgres-Connect02.png)

1. 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
<a name="USER_ConnectToPostgreSQLInstance.psql"></a>

É 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](https://www.postgresql.org/download/). 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](https://www.postgresql.org/docs/13/app-psql.html).

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 RDS para PostgreSQL com o driver JDBC da Amazon Web Services (AWS)
<a name="PostgreSQL.Connecting.JDBCDriver"></a>

O driver JDBC da Amazon Web Services (AWS) foi projetado como um wrapper JDBC avançado. Esse wrapper é complementar e amplia a funcionalidade do driver JDBC existente. O driver é compatível de forma intercambiável com o driver pgJDBC.

Para instalar o driver JDBC da AWS, anexe o arquivo .jar do driver JDBC da AWS (localizado na aplicação `CLASSPATH`) e mantenha referências ao respectivo driver da comunidade. Atualize o respectivo prefixo do URL de conexão da seguinte forma:
+ `jdbc:postgresql://` para `jdbc:aws-wrapper:postgresql://`

Consulte mais informações sobre o driver JDBC da AWS e siga as instruções para usá-lo em [Amazon Web Services (AWS) JDBC Driver GitHub repository](https://github.com/awslabs/aws-advanced-jdbc-wrapper).

# Conectar-se ao RDS para PostgreSQL com o driver Python da Amazon Web Services (AWS)
<a name="PostgreSQL.Connecting.PythonDriver"></a>

O driver Python da Amazon Web Services (AWS) foi projetado como um wrapper Python avançado. Esse wrapper é complementar e amplia a funcionalidade do driver Psycopg de código aberto. O driver Python da AWS é compatível com as versões 3.8 e posterior do Python. É possível instalar o pacote `aws-advanced-python-wrapper` usando o comando `pip`, bem como os pacotes de código aberto `psycopg`.

Para ter mais informações sobre o driver Python da AWS e instruções completas para usá-lo, consulte [Amazon Web Services (AWS) Python Driver GitHub repository](https://github.com/awslabs/aws-advanced-python-wrapper).

# Solucionar problemas de conexões com a sua instância RDS for PostgreSQL
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting"></a>

**Topics**
+ [Erro – FATAL: o banco de dados *nome* não existe](#USER_ConnectToPostgreSQLInstance.Troubleshooting-DBname)
+ [Erro – Não foi possível conectar-se ao servidor: a conexão expirou por exceder o tempo limite.](#USER_ConnectToPostgreSQLInstance.Troubleshooting-timeout)
+ [Erros com regras de acesso a grupos de segurança](#USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules)

## Erro – FATAL: o banco de dados *nome* não existe
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting-DBname"></a>

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.
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting-timeout"></a>

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](Overview.DBInstance.Modifying.md).
+ 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](Overview.DBInstance.Modifying.md).
+ Verifique se a porta que você está tentando usar já está ocupada por uma instância local do PostgreSQL ou por outro serviço em execução no computador. Por exemplo, se você tiver um banco de dados do PostgreSQL local em execução na mesma porta (o padrão é 5432), isso poderá impedir uma conexão bem-sucedida com a instância de banco de dados do RDS para PostgreSQL. Certifique-se de que a porta esteja livre ou tente se conectar com um número de porta diferente, se possível.
+ Consulte também [Erros com regras de acesso a grupos de segurança](#USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules).

## Erros com regras de acesso a grupos de segurança
<a name="USER_ConnectToPostgreSQLInstance.Troubleshooting-AccessRules"></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](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

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](Overview.RDSSecurityGroups.md). 