Serverless项目部署AWS后外部数据库无法访问问题求助
解决AWS部署后MySQL连接被拒绝的问题
可能的原因及解决方案
1. 检查AWS网络出口配置
AWS Lambda或EC2实例的网络权限可能限制了外部数据库访问:
- 确认Lambda所在VPC的安全组是否允许出站访问MySQL默认端口(3306),目标范围需包含数据库服务商的IP段或域名。
- 若使用NAT网关,核实路由表配置是否正确,确保外部请求能正常转发。
- 检查AWS账户的出站防火墙规则,确认未限制对数据库地址的访问。
2. 验证数据库白名单设置
本地能访问不代表AWS服务器IP在数据库白名单内:
- 查看数据库服务商的白名单配置,添加AWS服务器的公网IP(或VPC出口IP)到允许列表。
- 注意:VPC内的Lambda使用私有IP,需确认数据库是否允许对应私有IP段访问;无VPC的Lambda使用AWS公网IP段,可能需要联系服务商添加对应区域的IP段。
3. 排查ORM配置与部署环境一致性
本地正常不代表部署环境配置无误:
- 确认
orm.config.ts中的数据库地址、用户名、密码在部署环境中未被覆盖或篡改。 - 在AWS环境中(比如通过同VPC的EC2实例)直接执行MySQL命令,模拟Lambda的网络环境测试:
若该命令失败,说明是网络或白名单问题;若成功,再排查ORM的连接逻辑。mysql -h cp.myhost.com -u myuser -p
4. 测试网络连通性
数据库服务商未收到请求,大概率是中间链路被拦截:
- 用
telnet或tcping测试AWS服务器到数据库地址的3306端口是否连通:
若不通,联系AWS或网络服务商排查链路问题;若通,再检查数据库端的连接日志。telnet cp.myhost.com 3306
5. 调整Lambda网络模式
若VPC内的Lambda无法连接,可尝试:
- 在业务允许的情况下,将Lambda切换到无VPC模式,使用AWS公网出口访问数据库,测试是否能正常连接。
- 确认VPC子网为公有子网,或路由表已正确指向NAT网关。
内容的提问来源于stack exchange,提问作者Arco Voltaico
相关产品推荐
相关产品推荐

