本地通过代理连接Cloud SQL失败,部署Django至GAE遇阻求助
排查Cloud SQL代理连接超时问题
我之前部署Django到GAE时碰到过几乎一样的代理连接问题,结合你的报错信息,给你几个具体的排查方向:
检查端口配置是否匹配
你的代理日志显示监听的是127.0.0.1:3306,但报错里却在尝试连接Cloud SQL实例的3307端口——这很可能是关键问题!
先确认Django的settings.py里的数据库配置:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', 'PORT': '3306', # 必须和代理监听的端口一致 'NAME': '你的数据库名', 'USER': '你的用户名', 'PASSWORD': '你的密码', } }另外,Cloud SQL的MySQL实例默认端口是3306,3307通常是只读副本的端口,如果你没有配置只读副本,不要用这个端口。
确认Cloud SQL实例的连接名是否完整
启动代理时必须使用完整的实例连接名,格式是[项目ID]:[区域]:[实例名],而不是只写实例名。比如你的启动命令应该是:cloud_sql_proxy.exe -instances=你的项目ID:us-central1:你的实例名=tcp:3306如果只写实例名,代理无法正确定位到你的Cloud SQL实例,会尝试连接错误的IP地址,导致超时。
检查服务账号的权限
确保启动代理时使用的服务账号(或本地默认凭据)拥有Cloud SQL Client角色:- 打开Google Cloud控制台的IAM页面
- 找到对应的服务账号,确认已添加
Cloud SQL Client角色
如果没有这个权限,代理无法建立到Cloud SQL实例的连接,会出现超时或拒绝连接的错误。
验证网络出站连通性
虽然你关闭了本地防火墙,但有些网络环境(比如公司内网、校园网)会阻止到Cloud SQL端口的出站请求。可以用telnet测试一下:telnet 35.205.185.133 3307如果连接失败,说明你的网络环境限制了这个端口的访问,建议尝试:
- 切换到个人热点网络测试
- 联系网络管理员开放对应端口
- 改用Cloud SQL的私有IP(需要配置VPC网络,适合生产环境)
确认Cloud SQL实例状态
登录Google Cloud控制台,检查你的Cloud SQL实例是否处于RUNNING状态,有没有异常的运维事件(比如正在备份、重启)。如果实例处于停止或维护状态,代理肯定无法连接。
内容的提问来源于stack exchange,提问作者Ben P
相关产品推荐
相关产品推荐

