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

AWS Elastic Beanstalk实例无法连接RDS MySQL问题求助

排查AWS Elastic Beanstalk Tomcat连接RDS超时问题

先给你理一理思路——这种本地能连但Beanstalk实例连不上的情况,90%都是网络安全组/路由配置的问题,和你加的AmazonRDSFullAccess权限没关系(这个权限是用来管理RDS实例的,不是应用连接用的)。我帮你列几个必查的点:

1. 检查RDS安全组的入站规则

这是最常见的问题:

  • 登录AWS控制台,找到你的RDS实例,进入「连接与安全」标签,查看关联的安全组。
  • 点开安全组,检查入站规则里有没有一条:来源是你的Elastic Beanstalk环境对应的安全组ID,协议TCP,端口3306(MySQL默认端口)。
  • 你本地能连,大概率是RDS安全组里加了你本地IP的入站规则,但没加Beanstalk实例所在的安全组,导致Beanstalk的请求被RDS防火墙挡住了。

2. 检查Beanstalk实例的安全组出站规则

别忽略出站方向:

  • 找到Beanstalk环境对应的EC2实例,查看它的安全组。
  • 确认出站规则允许访问3306端口(或者允许所有出站流量,默认是允许的,但如果改过配置就要检查)。

3. 验证RDS的网络可达性

  • 先确认RDS实例的「公有可访问性」设置:如果你的Beanstalk和RDS在同一个VPC里,这个可以设为「否」,但要确保VPC路由表没有限制;如果是跨VPC或者本地能连,应该设为「是」。
  • 登录到Beanstalk的EC2实例(用SSM会话管理器或者密钥对登录),执行测试命令:
    telnet your-rds-endpoint.rds.amazonaws.com 3306
    # 或者用nc命令
    nc -zv your-rds-endpoint.rds.amazonaws.com 3306
    
    如果命令超时,说明网络层确实不通;如果能连上,那就要检查代码里的数据库配置了。

4. 核对Beanstalk的环境变量配置

有时候本地配置正确,但Beanstalk里的环境变量写错了:

  • 进入Beanstalk控制台→你的环境→「配置」→「软件」,查看数据库相关的环境变量(比如RDS_HOSTNAME、RDS_PORT、RDS_USERNAME、RDS_PASSWORD),确认和RDS控制台里的信息完全一致。

附:你提供的错误信息

Last packet sent to the server was 0 ms ago. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103) at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:718)

...............

Caused by: java.net.ConnectException: Connection timed out (Connection timed out) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.(Socket.java:434) at java.net.Socket.(Socket.java:244) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253) at com.mysql.jdbc.MysqlIO.(MysqlIO.java:280) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2026)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:14:07