到目前为止,这是我已经完成的工作:

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

但是,创建策略后,出现以下错误:

mysql - 无法通过mysql CLI工具使用IAM Auth连接到RDS实例-LMLPHP

我环顾四周,但不知道如何解决这些错误。

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/

10-11 10:42