通过命令行使用 IAM 身份验证连接到数据库实例:AWS CLI 和 mysql 客户端 - Amazon Relational Database Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

通过命令行使用 IAM 身份验证连接到数据库实例:AWS CLI 和 mysql 客户端

可以使用 AWS CLI 和 mysql 命令行工具从命令行连接到 Amazon RDS 数据库实例,如下所述。

以下是使用 IAM 身份验证连接到数据库实例的先决条件:

注意

有关使用具有 IAM 身份验证的 SQL WorkBench/J 连接到数据库的信息,请参阅博客文章使用 IAM 身份验证通过 SQL WorkBench/J 连接到 Aurora MySQL 或 Amazon RDS for MySQL

生成 IAM 身份验证令牌

以下示例说明了如何使用 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

在该示例中,参数如下所示:

  • --hostname – 要访问的数据库实例的主机名

  • --port – 用于连接到数据库实例的端口号

  • --region – 在其中运行数据库实例的 AWS 区域

  • --username – 要访问的数据库账户

令牌的前几个字符与以下内容类似。

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

连接到数据库实例

通用连接格式如下所示。

mysql --host=hostName --port=portNumber --ssl-ca=[full path]rds-combined-ca-bundle.pem --enable-cleartext-plugin --user=userName --password=authToken

参数如下所示:

  • --host – 要访问的数据库实例的主机名

  • --port – 用于连接到数据库实例的端口号

  • --ssl-ca – 包含公有密钥的 SSL 证书文件

    有关更多信息,请参阅 使用 SSL/TLS 加密与数据库实例的连接

  • --enable-cleartext-plugin – 一个指定 AWSAuthenticationPlugin 必须用于此连接的值

  • --user – 要访问的数据库账户

  • --password – 已签名的 IAM 身份验证令牌

身份验证令牌包含几百个字符。很难使用命令行对其进行处理。该问题的解决方式是,将令牌保存到一个环境变量中,然后在连接时使用此变量。以下示例说明了一种执行此解决方法的方式。

RDSHOST="rdsmysql.123456789012.us-west-2.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/rds-combined-ca-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOKEN

在使用 AWSAuthenticationPlugin 进行连接时,将使用 SSL 保护连接。要进行验证,请在 mysql> 命令提示符处键入以下内容。

show status like 'Ssl%';

输出中的以下行显示了更多详细信息。

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