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

使用MariaDB JDBC对接AWS RDS Proxy IAM认证出现访问拒绝问题

问题根因

报错的核心原因是MariaDB JDBC驱动未触发IAM认证逻辑,仍然使用原生MySQL密码认证方式提交请求,从RDS Proxy日志可以明确看到客户端使用mysql_native_password认证插件,而非IAM令牌认证。

排查与解决方案

1. 修正数据源URL配置

当前URL存在两处错误:

  • 存在冗余的&符号:credentialType=AWS-IAM&&verifyServerCertificate中的两个连续&需改为单个
  • 缺失AWS区域参数:MariaDB驱动的IAM认证逻辑需要显式指定awsRegion参数,否则无法生成对应区域的合法IAM令牌

修正后的配置参考:

datasources:
  default:
    url: jdbc:mariadb://XXXXXX/DATABASE?user=INSTANCE_PROFILE_NAME&credentialType=AWS-IAM&awsRegion=eu-west-1&verifyServerCertificate=true&useSSL=true&requireSSL=true&Unicode=yes&characterEncoding=UTF-8&passwordCharacterEncoding=UTF-8
    driverClassName: org.mariadb.jdbc.Driver
    type: org.mariadb.jdbc.MariaDbPoolDataSource

其中新增的passwordCharacterEncoding=UTF-8参数可以解决应用日志提示的密码字符编码不匹配问题。

2. 验证RDS实例数据库用户配置

确认你在底层RDS实例中已经创建了与IAM角色同名的数据库用户,且使用AWS专属认证插件,创建命令参考:

CREATE USER 'INSTANCE_PROFILE_NAME'@'%' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
GRANT ALL PRIVILEGES ON 你的数据库名.* TO 'INSTANCE_PROFILE_NAME'@'%';
FLUSH PRIVILEGES;

不得使用mysql_native_password作为该用户的认证插件。

3. 校验IAM权限配置

确认权限策略中的prx-XXXXXXXXX为你当前使用的RDS Proxy的真实资源ID,你使用的*通配符匹配所有数据库用户的配置是合法的,无需修改。

4. 驱动版本校验

你使用的mariadb-java-client:2.7.4版本原生支持AWS-IAM凭证类型,无需额外自定义IAM令牌生成逻辑,配置修正后即可正常触发认证流程。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:06:03