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

标签 mysql amazon-web-services rds

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

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

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

手册: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 应该共享密码或者我做错了什么??

最佳答案

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

DB 身份验证 token 是使用“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 的官方文档

关于mysql - 使用 IAM 策略的 AWS RDS 能够从另一个用户连接。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48813665/

相关文章:

php - 从mysql数据库读取pdf文件

mysql - MYSQL中子字符串与正则表达式的使用

amazon-web-services - 如何从 CF 中的另一个模板检索 secret 管理员名称?

amazon-web-services - 使用 Elastic Beanstalk 将多 docker 本地设置部署到 AWS

aws-cloudformation - 当 StorageType : io1 and donot use when Storage type : gp2 时,在 cloudformation 中使用 Iops 属性

mysql - 子查询的 WHERE 需要主查询中的字段

php - Codeigniter 结合 where_in 和 like 事件记录查询

apache - Apache 启动后无法远程访问我的 EC2

sql-server - 对于 AWS 上的引擎错误,DBName 必须为空 - RDS

mysql - 从私有(private)子网访问 AWS RDS