使用 IAM 角色的 AWS RDS MySQL 连接不工作

AWS RDS MySQL connection using IAM Role is not working

想提前告知我总体上是 AWS 的新手。对于我的项目,我正在尝试使用 AWS RDS MySQL 使用 IAM 身份验证(IAM 角色)来自部署在 Tomcat 上的 EC2 实例上的 Java 应用程序。在从 Java 尝试之前,我在 EC2 实例上从命令提示符尝试它。我正在按照这个 link 去做:

https://aws.amazon.com/premiumsupport/knowledge-center/users-connect-rds-iam/

到目前为止我已经完成了以下工作(如果我使用的术语不正确,请原谅):

我遵循了 link at the top 中给出的所有内容,除了最后一个命令外,一切似乎都有效。

与 link 一样,我创建了 DB 用户 ,如下所示:

CREATE USER dev_user IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';

link 中最后一个不起作用的命令是:

mysql -h {db or cluser endpoint} --ssl-ca={certificate file name with complete path} --ssl-verify-server-cert -u {dbusername2} -p"{authenticationtoken}" --enable-cleartext-plugin

每次我 运行 这个命令都要求输入密码,然后我收到一个错误。我不知道如何解决它。

在上面的 mysql 命令中,如果我传递我的 主用户 ID (我将其创建为 'admin')并输入它的密码,我会得到一个错误如下:

[ec2-user@ip-xxx-xx-xx-16 ~]$ mysql -h <endpoint of my RDS DB instance> --ssl-ca=rds-combined-ca-bundle.pem --ssl-verify-server-cert -u admin -p 'aws rds generate-db-auth-token --hostname <endpoint of my RDS DB instance> --port 3306 --username dev_user' --enable-cleartext-plugin

输入密码: 错误 1059 (42000):标识符名称 'aws rds generate-db-auth-token --hostname --port' 太长

如果在同一命令中我提供上面创建的数据库用户 (dev_user)。如果在命令中以用户身份提供 "dev_user" 以及是否输入密码,我会收到以下错误。 [上面的link没有设置密码,提示输入密码怎么办?]:

[ec2-user@ip-xxx-xx-xx-16 ~]$ mysql -h <endpoint of my RDS DB instance> --ssl-ca=rds-combined-ca-bundle.pem --ssl-verify-server-cert -u dev_user -p 'aws rds generate-db-auth-token --hostname <endpoint of my RDS DB instance> --port 3306 --username dev_user' --enable-cleartext-plugin

输入密码: 错误 1045 (28000):用户 'dev_user'@'xxx.xx.xx.16' 的访问被拒绝(使用密码:是)

当我在上述命令的两个地方输入 "admin" 时,我得到相同的 "Access denied..." 错误。

任何帮助将不胜感激。

谢谢。

首先,-p参数后面不应该有space。

其次,如果要内联执行aws rds generate-db-auth-token...,应该用对号标记,而不是单引号。

mysql -h <endpoint of my RDS DB instance> --ssl-ca=rds-combined-ca-bundle.pem --ssl-verify-server-cert -u dev_user -p`aws rds generate-db-auth-token --hostname <endpoint of my RDS DB instance> --port 3306 --username dev_user` --enable-cleartext-plugin