You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决IAM认证连接MySQL RDS时的1045访问拒绝错误

解决AWS RDS IAM数据库认证的Access Denied问题

看起来你已经完成了基础配置,但还是遇到了1045访问拒绝错误,我之前排查过类似的问题,给你几个关键的排查步骤,按顺序来大概率能解决:

1. 确认RDS实例的IAM认证确实处于启用状态

虽然你说创建时勾选了,但有时候配置可能被意外修改。可以通过两种方式验证:

  • 在RDS控制台,找到你的实例,进入「配置」标签,查看「IAM数据库认证」的状态是否为「已启用」
  • 用AWS CLI执行命令:
    aws rds describe-db-instances --db-instance-identifier <你的RDS实例名> --query 'DBInstances[0].IAMDatabaseAuthenticationEnabled'
    
    如果返回true才是正确的,否则需要重新启用IAM数据库认证。

2. 验证数据库用户的认证插件配置

登录你的RDS数据库(用有管理员权限的账号),执行以下SQL查询:

SELECT user, plugin FROM mysql.user WHERE user='lambda';

确保返回的plugin字段值是AWSAuthenticationPlugin。如果不是,需要重新设置用户的认证方式:

ALTER USER 'lambda' IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
FLUSH PRIVILEGES;

有时候CREATE USER语句可能因为某些原因没有生效,重新执行ALTER USER能确保配置正确。

3. 检查IAM策略的Resource ARN是否正确

这是最容易出错的地方!你之前用的<DB-ARN>/lambda格式是错误的,IAM策略中rds-db:connect对应的Resource必须是dbuser的ARN,而不是RDS实例的ARN。正确的ARN格式是:

arn:aws:rds-db:<区域>:<AWS账号ID>:dbuser:<DB资源ID>/lambda

获取正确的DB资源ID(DbiResourceId)可以用CLI:

aws rds describe-db-instances --db-instance-identifier <你的RDS实例名> --query 'DBInstances[0].DbiResourceId'

比如你的区域是us-east-1,账号ID是123456789012,DbiResourceId是db-ABCDEFGHIJKLMNOPQRST,那么正确的Resource应该是:

arn:aws:rds-db:us-east-1:123456789012:dbuser:db-ABCDEFGHIJKLMNOPQRST/lambda

修改IAM策略后,记得重新附加到Lambda执行角色和EC2的IAM角色上,等待策略生效(通常几分钟)。

4. 验证MySQL客户端版本兼容性

AWSAuthenticationPlugin对MySQL客户端版本有要求:

  • 如果是MySQL 5.6版本的RDS,客户端版本需要至少是5.7.19或更高
  • 如果是MySQL 5.7/8.0,客户端版本至少是对应大版本的更新版本

你可以在EC2上执行mysql --version查看客户端版本,如果版本过低,建议升级客户端。比如在Amazon Linux 2上可以用yum install mysql-community-client来安装较新的版本。

5. 排除网络和安全组的潜在问题

虽然你的错误是Access Denied(不是连接超时),但还是要快速确认:

  • Lambda/EC2的安全组是否允许出站访问RDS实例的3306端口
  • RDS实例的安全组是否允许来自Lambda/EC2安全组的3306端口入站流量
  • 如果RDS是私有访问模式,Lambda/EC2是否在同一个VPC的私有子网中,能正常解析RDS的endpoint

按照以上步骤逐一排查,应该能解决你的访问拒绝问题。

内容的提问来源于stack exchange,提问作者NBajanca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:29:47