Conectando-se à sua instância de banco de dados usando a autenticação do IAM na linha de comando: AWS CLI e cliente mysql - Amazon Relational Database Service

Conectando-se à sua instância de banco de dados usando a autenticação do IAM na linha de comando: AWS CLI e cliente mysql

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:

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.

Gerar um token de autenticação do IAM

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

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:

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_dir/ 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 proxy usando autenticação do IAM.