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

在AWS EC2实例部署Web应用:数据库连接困惑求助

问题解决:EC2部署Web应用时MySQL数据库连接失败

先搞懂EC2本地MySQL和RDS MySQL的区别

  • EC2本地MySQL:直接安装在你的EC2实例内,与Web应用共享同一台服务器,连接时使用localhost或127.0.0.1作为主机名,适合测试场景,需自行负责数据库运维。
  • AWS RDS MySQL:AWS托管的独立数据库服务,拥有专属访问端点,由AWS负责备份、高可用、运维等工作,适合生产场景。

二选一:修改JDBC连接配置

选项1:连接EC2本地MySQL

把JDBC连接URL修改为:

String url = "jdbc:mysql://localhost:3306/";
// 也可使用EC2的私有IP,效果一致

额外检查项:

  • 确保EC2本地MySQL服务处于运行状态:执行sudo systemctl start mysqld(CentOS/RHEL系统)或sudo systemctl start mysql(Ubuntu系统)
  • 你已在本地MySQL中创建LOGIN库和users表,此步骤无需重复操作
  • 本地MySQL的root用户默认允许本地连接,无需额外授权

选项2:连接AWS RDS MySQL(推荐生产环境使用)

这是你原本的目标方案,按以下步骤修正:

  1. 修正JDBC URL:将代码中的{RDS Database Instance endpoint}替换为RDS控制台中实例详情页的实际端点(例如mydb-xxxx.us-east-1.rds.amazonaws.com),修改后的代码如下:
    String url = "jdbc:mysql://你的RDS实际端点:3306/";
    
  2. 核对RDS关键配置:
    • RDS实例状态必须为「可用」(Available),新创建的实例需等待数分钟完成初始化
    • RDS的安全组需允许EC2实例访问3306端口:在RDS控制台的「安全组」设置中,添加入站规则,类型选择「MySQL/Aurora(3306)」,源选择你的EC2实例安全组或私有IP
    • 注意:RDS的root密码与EC2本地MySQL的密码不通用,需使用创建RDS实例时设置的密码
    • RDS内的LOGIN库为空!你之前是在EC2本地MySQL中创建的表,需将建表脚本在RDS上执行一遍:
      通过EC2终端连接RDS:mysql -h 你的RDS端点 -u root -p LOGIN,输入RDS密码后执行建表SQL:
      drop table if exists users;
      create table users (
          id int primary key auto_increment,
          user_name varchar(50),
          pass varchar(50),
          email varchar(50),
          mobile varchar(20)
      );
      

连接失败的常见排查点(对应你遇到的con为null问题)

  1. 网络不通:EC2与RDS之间的安全组规则配置错误,导致3306端口无法访问
  2. 端点错误:复制RDS端点时遗漏后缀或输入字符错误
  3. 账号密码错误:混淆了EC2本地MySQL与RDS的密码
  4. JDBC驱动版本不兼容:确保驱动版本与RDS的MySQL版本匹配(例如MySQL 8.0需使用mysql-connector-java 8.x版本)

你提供的错误信息翻译

com.mysql.cj.jdbc.exceptions.CommunicationsException: 通信链路失败
最后一次成功向服务器发送数据包是0毫秒前。驱动程序未收到来自服务器的任何数据包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:17:36