通过命令行 AWS CLI 和 mysql 客户端,使用 IAM 身份验证连接到数据库实例
可以使用 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
\ --port3306
\ --regionus-west-2
\ --usernamejane_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...
注意
您不能使用自定义 Route 53 DNS 记录代替数据库实例端点来生成身份验证令牌。
连接到数据库实例
通用连接格式如下所示。
mysql --host=
hostName
--port=portNumber
--ssl-ca=full_path_to_ssl_certificate
--enable-cleartext-plugin --user=userName
--password=authToken
参数如下所示:
-
--host
– 要访问的数据库实例的主机名 -
--port
– 用于连接到数据库实例的端口号 -
--ssl-ca
– 包含公有密钥的 SSL 证书文件的完整路径有关 MariaDB 的 SSL/TLS 支持的更多信息,请参阅 将 SSL/TLS 与 MariaDB 数据库实例结合使用。
有关 MySQL 的 SSL/TLS 支持的更多信息,请参阅 将 SSL/TLS 与 MySQL 数据库实例结合使用。
要下载 SSL 证书,请参阅 使用 SSL/TLS 加密与数据库实例或集群的连接。
-
--enable-cleartext-plugin
– 一个指定AWSAuthenticationPlugin
必须用于此连接的值如果您使用 MariaDB 客户端,则无需
--enable-cleartext-plugin
选项。 -
--user
– 要访问的数据库账户 -
--password
– 已签名的 IAM 身份验证令牌
身份验证令牌包含几百个字符。很难使用命令行对其进行处理。该问题的解决方式是,将令牌保存到一个环境变量中,然后在连接时使用此变量。以下示例说明了一种执行此解决方法的方式。在该示例中,/sample_dir/
是包含公有密钥的 SSL 证书文件的完整路径。
RDSHOST="
mysqldb.123456789012.us-east-1.rds.amazonaws.com
" TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port3306
--regionus-west-2
--usernamejane_doe
)" mysql --host=$RDSHOST --port=3306
--ssl-ca=/sample_dir/
global-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 | | ... | ... +-----------------------------+
如果您想通过代理连接到数据库实例,请参阅使用 IAM 身份验证连接到代理。