AWS EC2中Spring Boot JDBC连接RDS始终解析为本地IP问题
问题分析与解决
你遇到的核心问题是MySQL用户权限的来源限制:虽然EC2能通过命令行连接RDS,但Spring Boot使用的admin用户未被授权从EC2的内部IP(10.10.11.6)访问RDS数据库。
验证用户权限
先通过命令行登录RDS的MySQL实例,执行以下命令查看admin用户的授权来源:
SELECT user, host FROM mysql.user WHERE user = 'admin';
如果结果里host列不是%(允许所有IP)或10.10.11.6(你的EC2内部IP),就会出现Access denied错误——MySQL的权限是严格绑定连接发起IP的。
授予对应权限
根据你的场景,选择以下一种方式授权:
- 仅允许当前EC2 IP访问:
GRANT ALL PRIVILEGES ON nssf_ussd.* TO 'admin'@'10.10.11.6' IDENTIFIED BY '你的数据库密码'; FLUSH PRIVILEGES;
- 允许整个VPC内部IP段访问(如果后续EC2 IP可能变化):
GRANT ALL PRIVILEGES ON nssf_ussd.* TO 'admin'@'10.10.%' IDENTIFIED BY '你的数据库密码'; FLUSH PRIVILEGES;
- 允许任意IP访问(不推荐生产环境):
GRANT ALL PRIVILEGES ON nssf_ussd.* TO 'admin'@'%' IDENTIFIED BY '你的数据库密码'; FLUSH PRIVILEGES;
额外检查点
- 确认Spring Boot配置中的
username确实是admin(你提到修改用户名错误信息同步更新,这一点应该没问题) - 确保RDS的安全组已经允许EC2所在的安全组/IP访问3306端口(命令行能连接,说明这一步已经配置正确)
内容的提问来源于stack exchange,提问作者Makamu Evans
相关产品推荐
相关产品推荐

