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

如何实现两台Amazon EC2实例间跨实例连接MySQL数据库

Amazon EC2 Ubuntu 20.04 跨实例MySQL远程连接配置指南

适用于实例A(部署MySQL+Laravel)、实例B(仅部署Laravel)的场景,和DigitalOcean的配置逻辑核心差异在EC2安全组层的规则配置,其余MySQL、Laravel侧操作基本一致。

1. 配置实例A的EC2安全组入站规则

这是AWS环境特有的前置配置,安全组是EC2实例的第一层网络防火墙,不配置的话系统内防火墙、MySQL配置全对也连不上:

  • 进入EC2控制台找到实例A,点击进入其绑定的安全组配置页
  • 添加入站规则:
    • 类型选择MySQL/Aurora,端口默认填充3306,不需要修改
    • 源地址禁止填0.0.0.0/0(全量开放会被暴力破解扫描),同VPC场景直接填实例B的私有IP;如果是跨VPC/公网连接,填实例B的公网IP,或者直接选择实例B绑定的安全组作为源(更灵活,后续实例B更换IP不需要改规则)
    • 保存规则即可,AWS安全组规则即时生效,不需要重启实例

2. 调整实例A的MySQL监听配置

Ubuntu 20.04默认安装的MySQL仅监听本地回环地址,外部请求无法到达:

  • SSH登录实例A,编辑MySQL核心配置文件:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  • 找到bind-address = 127.0.0.1配置行,修改为bind-address = 0.0.0.0(如果仅走私网连接,也可以直接填实例A的私有IP,更安全)
  • 保存退出编辑器,重启MySQL服务让配置生效:sudo systemctl restart mysql
  • 执行校验命令sudo ss -tulpn | grep mysql,返回结果中3306端口的监听地址和你配置的一致即为正常
  • 如果你开了Ubuntu自带的ufw防火墙,需要额外执行命令放通对应源的访问:sudo ufw allow in from <实例B的IP> to any port 3306,未启用ufw可跳过

3. 创建Laravel专属远程访问账号

不要直接用root账号做远程连接,权限过高存在安全风险:

  • 登录实例A的MySQL命令行:mysql -u root -p,输入本地数据库的root密码进入
  • 依次执行以下SQL语句,注意替换占位符为实际业务值:
-- 限定账号仅允许从实例B的IP发起连接
CREATE USER 'laravel_biz'@'<实例B的IP>' IDENTIFIED BY '你的高强度数据库密码';
-- 给账号授予业务库的全量操作权限
GRANT ALL PRIVILEGES ON <你的Laravel业务库名>.* TO 'laravel_biz'@'<实例B的IP>';
-- 刷新权限表让配置立即生效
FLUSH PRIVILEGES;
  • 注意:账号host部分填的IP必须和安全组放通的源IP完全一致,否则会报1045访问拒绝错误

4. 修改实例B上的Laravel连接配置

  • SSH登录实例B,进入Laravel项目根目录,编辑环境配置文件.env,修改数据库相关配置项:
DB_CONNECTION=mysql
DB_HOST=<实例A的连接IP> # 走私网填A的私网IP,走公网填A的公网IP
DB_PORT=3306
DB_DATABASE=<你的Laravel业务库名>
DB_USERNAME=laravel_biz
DB_PASSWORD=你刚才设置的高强度数据库密码
  • 保存文件后,清理Laravel的配置缓存避免旧配置生效:php artisan config:clear && php artisan cache:clear

5. 连通性校验

  • 先在实例B上安装MySQL客户端做基础网络、账号校验:sudo apt update && sudo apt install mysql-client -y
  • 执行连接命令:mysql -h <实例A的连接IP> -u laravel_biz -p,输入密码后能正常进入MySQL命令行,说明网络层、账号层配置正常
  • 回到Laravel项目根目录执行迁移命令php artisan migrate,无连接报错、能正常执行迁移即为配置完成

常见踩坑汇总

  • 同可用区/同VPC下优先走私有IP连接,不需要经过公网,延迟更低、安全性更高,也不会产生公网流量费用
  • 如果连接超时,优先排查安全组规则是否放通、实例A的ufw是否放通、MySQL的bind-address配置是否正确
  • 如果报1045访问拒绝,优先排查账号的host配置是否和实例B的出口IP匹配、密码是否正确、权限是否刷新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:15:39