Django项目连接Google Cloud SQL(PostgreSQL)失败求助及配置指南
Django连接Google Cloud SQL(PostgreSQL)完整配置指南
一、先解决当前连接错误
你遇到的是网络或SSL配置层面的问题,按以下步骤排查:
1. 检查Cloud SQL的授权IP
登录Google Cloud控制台,找到你的Cloud SQL实例:
- 进入「连接」→「公共IP」→「授权网络」
- 添加Django服务器的公网IP(格式为
x.x.x.x/32),保存后等待1-2分钟生效 - 测试阶段可临时添加
0.0.0.0/0(生产环境禁止使用,风险极高)
2. 配置SSL连接(Cloud SQL默认强制要求)
Cloud SQL不允许无SSL的公网连接,必须配置证书:
- 在Cloud SQL实例的「连接」→「SSL」页面,点击「创建客户端证书」,下载三个文件:
server-ca.pem、client-cert.pem、client-key.pem - 将这三个文件放到Django项目的安全目录(比如新建
ssl文件夹,不要提交到版本库) - 修改
settings.py的数据库配置,添加SSL参数:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'HOST': '你的Cloud SQL公网IP', 'USER': '你的数据库用户名', 'PASSWORD': '你的数据库密码', 'NAME': '你的数据库名称', 'PORT': '5432', 'OPTIONS': { 'sslmode': 'require', 'sslrootcert': '/证书文件绝对路径/server-ca.pem', 'sslcert': '/证书文件绝对路径/client-cert.pem', 'sslkey': '/证书文件绝对路径/client-key.pem', }, } }
注意替换为你自己的证书实际路径。
3. 检查服务器防火墙
确保Django服务器的出站规则允许访问5432端口(PostgreSQL默认端口),如果是云服务器(如GCE、阿里云ECS),需要在安全组中添加出站规则:允许TCP 5432端口访问Cloud SQL的公网IP。
二、完整配置流程(从0到1)
前置准备
- 已创建Cloud SQL PostgreSQL实例,记录好公网IP、数据库用户名、密码、数据库名称
- 安装依赖包:
pip install psycopg2-binary(比psycopg2更易安装适配)
配置步骤
- 按照上述方法完成Cloud SQL授权IP设置和SSL证书配置
- 修改
settings.py中的数据库配置(即带SSL参数的代码段) - 测试连接:运行
python manage.py migrate,无报错则连接成功
三、生产环境安全优化方案(推荐)
使用Cloud SQL Auth Proxy替代公网IP连接,无需暴露数据库公网IP,也无需手动配置SSL:
- 在Django服务器上下载并安装Cloud SQL Auth Proxy
- 启动代理:
./cloud-sql-proxy 你的项目ID:实例区域:实例名称 - 修改Django配置:将
HOST改为127.0.0.1,保留PORT为5432,删除OPTIONS中的SSL参数即可
内容的提问来源于stack exchange,提问作者Kuth
相关产品推荐
相关产品推荐

