

# Conectando-se à sua instância de banco de dados usando a autenticação do IAM na linha de comando: AWS CLI e cliente mysql
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI"></a>

Você pode se conectar de uma linha de comando a uma instância de banco de dados do Amazon RDS com a AWS CLI e a ferramenta da linha de comando `mysql`, conforme descrito a seguir.

**Pré-requisitos**  
Veja a seguir os pré-requisitos para se conectar à instância de banco de dados usando a autenticação do IAM:
+ [Habilitar e desabilitar a autenticação de banco de dados do IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Criar e usar uma política do IAM para acesso do banco de dados do IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Criar uma conta de banco de dados usando autenticação do IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**nota**  
Para obter informações sobre como se conectar ao banco de dados usando o SQL Workbench/J com autenticação do IAM, consulte a publicação do blog [Use IAM authentication to connect with SQL Workbench/J to Aurora MySQL or Amazon RDS para MySQL](https://aws.amazon.com/blogs/database/use-iam-authentication-to-connect-with-sql-workbenchj-to-amazon-aurora-mysql-or-amazon-rds-for-mysql/).

**Topics**
+ [Gerar um token de autenticação do IAM](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken)
+ [Conexão à instância de banco de dados](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect)

## Gerar um token de autenticação do IAM
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken"></a>

O exemplo a seguir mostra como obter um token de autenticação assinado usando a AWS CLI.

```
aws rds generate-db-auth-token \
   --hostname rdsmysql.123456789012.us-west-2.rds.amazonaws.com \
   --port 3306 \
   --region us-west-2 \
   --username jane_doe
```

No exemplo, os parâmetros são os seguintes:
+ `--hostname`: o nome do host da instância de banco de dados que você deseja acessar
+ `--port`: o número da porta usada para se conectar à instância de banco de dados
+ `--region`: a região da AWS na qual a instância do banco de dados está em execução.
+ `--username`: a conta de banco de dados que você deseja acessar

Os primeiros caracteres do token são parecidos com os seguintes.

```
rdsmysql.123456789012.us-west-2.rds.amazonaws.com:3306/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
```

**nota**  
Não é possível usar um registro DNS personalizado do Route 53 em vez do endpoint da instância de banco de dados para gerar o token de autenticação.

## Conexão à instância de banco de dados
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect"></a>

O formato geral para se conectar é mostrado a seguir.

```
mysql --host=hostName --port=portNumber --ssl-ca=full_path_to_ssl_certificate --enable-cleartext-plugin --user=userName --password=authToken
```

Os parâmetros são os seguintes:
+ `--host`: o nome do host da instância de banco de dados que você deseja acessar
+ `--port`: o número da porta usada para se conectar à instância de banco de dados
+ `--ssl-ca`: o caminho completo para o arquivo de certificado SSL que contém a chave pública

  Para ter mais informações sobre o suporte SSL/TLS para o MariaDB, consulte [Suporte de SSL/TLS para instâncias de banco de dados do MariaDB no Amazon RDS](MariaDB.Concepts.SSLSupport.md).

  Para ter mais informações sobre o suporte SSL/TLS para o MySQL, consulte [Suporte do SSL/TLS para instâncias de banco de dados do MySQL no Amazon RDS](MySQL.Concepts.SSLSupport.md).

  Para baixar um certificado SSL, consulte [Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados](UsingWithRDS.SSL.md).
+ `--enable-cleartext-plugin`: um valor que especifica que o `AWSAuthenticationPlugin` deve ser usado para essa conexão

  Se você estiver usando um cliente MariaDB, a opção`--enable-cleartext-plugin` não será necessária.
+ `--user`: a conta de banco de dados que você deseja acessar
+ `--password`: um token de autenticação do IAM assinado

Um token de autenticação é composto de várias centenas de caracteres. Ele pode ser incômodo para a linha de comando. Um modo de contornar isso é salvar o token em uma variável de ambiente, e usar essa variável quando você se conectar. O exemplo a seguir mostra um modo de executar essa solução alternativa. No exemplo, */sample\$1dir/* corresponde ao caminho completo do arquivo de certificado SSL contendo a chave pública.

```
RDSHOST="mysqldb.123456789012.us-east-1.rds.amazonaws.com"
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username jane_doe )"

mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/global-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOKEN
```

Quando você se conecta usando o `AWSAuthenticationPlugin`, a conexão é protegida usando SSL. Para verificar isso, digite o seguinte no prompt de comando `mysql>`.

```
show status like 'Ssl%';
```

As seguintes linhas na saída mostram mais detalhes.

```
+---------------+-------------+
| Variable_name | Value                                                                                                                                                                                                                                |
+---------------+-------------+
| ...           | ...
| Ssl_cipher    | AES256-SHA                                                                                                                                                                                                                           |
| ...           | ...
| Ssl_version   | TLSv1.1                                                                                                                                                                                                                              |
| ...           | ...
+-----------------------------+
```

Se você quiser se conectar a uma instância de banco de dados por meio de um proxy, consulte [Conectar-se a um banco de dados usando autenticação do IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).