到目前为止,这是我已经完成的工作:
1)我创建了一个属于AdministratorAccess组的AWS IAM用户。另外,我创建了一个策略并将其附加到该用户,以便允许访问RDS实例。该策略如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"rds-db:connect"
],
"Resource": [
"arn:aws:rds:<region>:<account id>:<user>:<DB instance resource id>/<DB instance user>"
]
}
]
}
此策略源自AWS文档中的示例:Creating and Using an IAM Policy for IAM Database Access
但是,创建策略后,出现以下错误:
我环顾四周,但不知道如何解决这些错误。
2)我创建了启用了IAM DB身份验证的RDS实例。之后,我向实例的“安全组”添加了一条规则,该规则允许我的便携式计算机连接到数据库实例。
3)最后,按照“ Command Line: AWS CLI and mysql Client”中的说明,我创建了一个脚本,用于从笔记本电脑连接数据库。脚本如下:
#!/bin/bash
USERNAME="<IAM user>"
CERTIFICATE="<full path>/rds-combined-ca-bundle.pem"
RDSHOST="<RDS instance Endpoint>"
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username $USERNAME)"
mysql --host=$RDSHOST --port=3306 --ssl-ca=$CERTIFICATE --enable-cleartext-plugin --user=$USERNAME --password=$TOKEN
运行脚本时,出现以下错误:
ERROR 1045 (28000): Access denied for user '<IAM user>'@'c-73-227-21-39.hsd1.ct.comcast.net' (using password: YES)
看来问题可能是由于我建立的政策有误,但我无法弄清楚。对于这个问题,我将提供一些建议/帮助。
最佳答案
您需要创建一个数据库用户。 Creating a Database Account,用户名应该是数据库用户,而不是IAM用户
CREATE USER jane_doe IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
关于mysql - 无法通过mysql CLI工具使用IAM Auth连接到RDS实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49582142/