使用 IAM 策略的 AWS RDS 能够从另一个用户连接。

AWS RDS using IM policy to be abbe to connect from another user.

我在 AWS 上创建了一个 MysQL RDS 实例。 我可以使用我自己的用户连接到 MysQL,该用户创建了这样的实例:

mysql -h aws-host -P 3306 -u MyUser -p

我需要将 Mysql 的访问权限授予已在 AWS 上注册的其他用户。

手动:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.DBAccounts.html

用户创建工作正常,但是当我从我的用户注销并尝试使用新用户重新登录时,它不起作用。

由于身份验证插件错误,我遇到了用户无法连接到 Mysql 的问题。

命令:

mysql -h aws-host -P 3306 -u newUser -p

当我输入密码时,我得到:

Error: ERROR 2059 (HY000): Authentication plugin 'mysql_clear_password' cannot be loaded: plugin not enabled

密码是正确的,因为它是我用来与该用户一起登录 aws 并且启用了 IAM DB 身份验证的密码,我认为 IM 和 RDS 应该共享密码或者我做错了什么??

问题的原因是数据库身份验证令牌和连接字符串中缺少 SSL。使用 IAM 数据库身份验证时,进出数据库的网络流量使用安全套接字层 (SSL) 进行加密

DB 身份验证令牌是使用 "generate-db-auth-token" 生成的,并且 SSL 需要使用可用的根证书 here。一旦文件在计算机上可用,就可以使用以下语法进行身份验证:

RDSHOST="myinstance.***********.rds-us-east-1.amazonaws.com"
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --username test )"
mysql --host=$RDSHOST --port=3306 --enable-cleartext-plugin --ssl-ca=[full path]rds-combined-ca-bundle.pem --ssl-mode=VERIFY_IDENTITY --user=test --password=$TOKEN

这是connecting to MySQL Database with IAM DB Authentication

的官方文档

在我的例子中,我不得不在 mysqlworkbench 的 SSL 选项卡下将 SSL required 更改为 no,然后它就消失了。