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

本地可连AWS RDS但部署到EC2后无法连接问题求助

问题:EC2部署的Spring Boot应用无法连接AWS RDS MySQL

我是一名学生,正在使用AWS免费套餐的EC2和RDS进行探索。我的Spring Boot应用application.properties配置如下:

server.port=8080
spring.datasource.url=jdbc:mysql://tiktok.cdo6k4mey5el.us-east-1.rds.amazonaws.com:3306/tiktok
spring.datasource.username=admin
spring.datasource.password=**********
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

本地运行该应用时,我可以连接到RDS数据库并执行CRUD操作,但将应用部署到EC2后,却无法连接到RDS上的MySQL。

相关配置信息

  • EC2安全组:入站规则允许8080、22端口访问;出站规则全开放
  • RDS安全组:入站规则仅允许本地IP访问3306端口;出站规则全开放

排查解决方案

1. 修正RDS安全组入站规则

目前你的RDS只开放了本地IP的3306访问权限,EC2实例不在允许范围内,这是最可能的核心原因。

  • 操作:进入AWS控制台的RDS安全组设置,添加一条**MySQL/Aurora(3306)**的入站规则,来源选择你的EC2实例所属的安全组ID(格式如sg-xxxxxx)。用安全组作为来源比指定单个IP更灵活,后续EC2实例更换IP也无需重新配置。

2. 测试EC2到RDS的网络连通性

登录EC2实例,用以下命令验证网络是否通畅:

# 使用telnet测试连接
telnet tiktok.cdo6k4mey5el.us-east-1.rds.amazonaws.com 3306
# 或用nc命令更直观查看结果
nc -zv tiktok.cdo6k4mey5el.us-east-1.rds.amazonaws.com 3306
  • 如果显示连接失败,回到安全组/VPC配置检查;如果能连通,再排查应用层面问题。

3. 确认EC2与RDS的VPC一致性

确保EC2和RDS处于同一个VPC中。如果是不同VPC,必须配置VPC对等连接,否则即使安全组规则正确,网络也无法打通。

4. 检查RDS公有可访问性设置

在RDS实例详情页查看公有可访问性选项:

  • 如果设置为否:仅VPC内资源可访问,需确保EC2和RDS在同一VPC,且RDS所在子网的路由表配置正确;
  • 如果设置为是:公网可访问,但仍需安全组放行EC2的访问请求。

5. 查看应用日志定位具体错误

在EC2上查看Spring Boot应用的启动日志,根据错误信息精准排查:

  • Connection refused:网络层面不通,回到安全组/VPC配置检查;
  • Access denied for user 'admin'@'xxx.xxx.xxx.xxx':确认用户名密码正确,或给RDS的admin用户添加EC2 IP的访问权限;
  • Unknown database 'tiktok':登录RDS确认tiktok数据库已创建。

6. 检查EC2本地防火墙

部分EC2实例可能启用了iptables等本地防火墙,检查是否阻止了3306端口的出站请求:

sudo iptables -L

若存在阻止规则,添加允许出站到3306端口的规则即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:03:37