Cloud Run容器无法连接Cloud SQL实例问题排查
Cloud Run连接Cloud SQL超时问题解决方案
问题根源
你通过公网IP直接连接Cloud SQL,但Cloud Run实例没有固定出站IP,无法被加入SQL实例的授权IP白名单,导致连接被防火墙拦截,触发超时错误。
可行配置方案
1. 使用Cloud SQL Auth代理(官方推荐)
- 部署Cloud Run服务时,添加Cloud SQL实例关联:
执行部署命令时加入参数:--add-cloudsql-instances=你的项目ID:实例区域:实例名称 - 调整数据库连接字符串为代理本地地址:
host=127.0.0.1 port=5432 user=数据库用户名 password=数据库密码 dbname=目标数据库名 - 确保Cloud Run使用的服务账号拥有
Cloud SQL Client角色权限
2. 配置VPC访问连接器(适合私有网络场景)
- 创建VPC访问连接器,将Cloud Run实例接入你的VPC网络
- 给Cloud SQL实例配置私有IP,保证其与VPC连接器处于同一网络
- 修改连接字符串使用Cloud SQL的私有IP,同时确认VPC内防火墙规则允许Cloud Run实例访问SQL实例的5432端口
3. 临时方案:添加Cloud Run出站IP范围(不推荐长期使用)
- 查看Cloud Run所在区域的出站IP范围:通过GCP控制台查看,或执行命令
gcloud run services describe 你的服务名 --region 服务区域 - 将获取到的IP范围添加到Cloud SQL实例的授权IP列表中
- 注意:该IP范围可能会随GCP调整发生变化,长期依赖存在风险
额外检查点
- 确认Cloud Run服务账号已被授予
Cloud SQL Client或更高权限的角色 - 检查Cloud SQL实例的对应数据库服务(如PostgreSQL)是否正常启用,5432端口是否处于监听状态
- 核对连接字符串中的用户名、密码、数据库名是否正确,避免混淆公网IP、私有IP或代理地址
内容的提问来源于stack exchange,提问作者B.obed
相关产品推荐
相关产品推荐

