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

如何将Google Cloud Run上的Spring Boot服务连接到Cloud SQL实例?

Cloud Run连接Cloud SQL失败解决方案

核心错误原因

你当前同时混用了公网IP连接和Cloud Run内置Cloud SQL连接两种逻辑,是配置冲突导致的通信失败,优先推荐使用更安全的内置套接字连接方案,不需要开放SQL实例公网访问权限。

配置修正步骤

  • 调整Spring Boot数据源URL配置,替换原有公网IP格式的URL:
    jdbc:mysql:///<你的数据库名>?cloudSqlInstance=<Cloud SQL实例连接名>&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false
    其中Cloud SQL实例连接名可在Cloud SQL实例详情页获取,格式为项目ID:实例所在区域:实例名
  • 确认Spring Boot项目已引入Cloud SQL MySQL套接字工厂依赖,Maven配置示例:
    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-sql-mysql-socket-factory</artifactId>
        <version>1.13.0</version>
    </dependency>
    
    Gradle配置示例:
    implementation 'com.google.cloud:google-cloud-sql-mysql-socket-factory:1.13.0'
    
  • 重新打包镜像并上传至Container Registry

权限校验

  • 找到Cloud Run服务使用的服务账号(默认服务账号为[项目编号]-compute@developer.gserviceaccount.com,可在Cloud Run服务部署页的【安全】选项卡查看)
  • 给该服务账号绑定Cloud SQL Client角色,可在Cloud SQL实例的【权限】页面操作

部署配置

  • 重新部署Cloud Run服务,保留spring.datasource.url、spring.datasource.username、spring.datasource.password三个环境变量即可
  • 保持高级设置中Cloud SQL实例的连接配置处于开启状态

问题排查

如果部署后依旧报错,可通过Cloud Run日志面板确认具体错误类型:

  • 提示Access denied:检查数据库用户名、密码配置是否正确,确认该账号有权限从本地/套接字访问数据库
  • 提示连接超时/通信链路失败:检查Cloud SQL实例连接名拼写是否正确,确认服务账号的Cloud SQL Client角色已绑定

如果你坚持使用公网IP连接方案(仅临时测试用,安全性极低),需要额外在Cloud SQL实例的【授权网络】中添加0.0.0.0/0允许所有IP访问,Cloud Run的动态出口IP无法固定添加到授权列表。


内容的提问来源于stack exchange,提问作者Radu Aramă

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 21:33:03