Spring Boot部署到EC2后无法连接同VPC下的AWS RDS MySQL问题
问题排查:Spring Boot部署EC2后无法连接同VPC的AWS RDS MySQL
问题详情
- 运行在3306端口的AWS RDS(MySQL)实例,安全组已允许所有来源流量
- 本地Spring Boot应用可正常连接该RDS,但将同版本Java JRE编译的Jar包部署到EC2后,无法建立数据库连接
- EC2的入站、出站规则均允许所有流量,且与RDS处于同一VPC
- EC2上通过CLI可正常连接RDS,尝试开放所有服务流量后问题仍未解决
- 执行
telnet mysqlIP 3306得到如下结果:
实用排查方向
- 核对应用配置文件
确认EC2上应用的application.properties/application.yml中数据库连接URL、用户名、密码是否完全正确,有没有误写本地测试地址;同时检查是否配置了代理或自定义DNS,导致Java应用解析RDS域名时和系统CLI逻辑不一致。 - 检查Java层面的网络限制
部分EC2镜像自带的java.policy文件可能限制了网络出站,查看该文件是否存在针对3306端口的拦截规则;另外检查系统防火墙(如iptables、firewalld),确认是否有针对Java进程的特殊拦截策略。 - 验证RDS的连接要求
查看RDS是否开启了SSL强制连接,本地应用可能配置了SSL参数但EC2上的应用遗漏;如果用了IAM数据库认证,确认EC2的IAM角色是否有对应权限,且Java应用是否正确配置了IAM认证的驱动参数。 - 排查Java环境兼容性
虽然用了相同版本的JRE,但要确认EC2上的JRE发行版(如OpenJDK vs Oracle JDK)是否和本地一致;同时检查MySQL驱动版本,是否存在EC2环境下的兼容性问题。 - 抓包对比分析
在EC2上执行tcpdump port 3306抓包,对比CLI连接和Java应用连接的数据包,看Java应用是否正常发送了连接请求,或者RDS是否返回了异常响应。
内容的提问来源于stack exchange,提问作者perito Perito
相关产品推荐
相关产品推荐

