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

如何使用psycopg2通过SSL连接Google Cloud SQL PostgreSQL数据库

别担心,基础问题完全没毛病!我来一步步帮你搞定用psycopg2连接带SSL加密的GCP PostgreSQL实例的事儿——毕竟刚接触加密技术的时候,这些配置确实容易懵。

连接启用SSL的GCP PostgreSQL实例(psycopg2 + Python3.6)

第一步:先搞定psycopg2的安装

因为你用的是conda管理的Python3.6,优先用conda安装psycopg2,这样能避免很多编译依赖的问题:

conda install -c anaconda psycopg2

如果conda安装卡壳了,换用conda环境里的pip安装预编译版本的psycopg2-binary,省心又快捷:

pip install psycopg2-binary

小提示:如果是Python3.6,最新版的psycopg2-binary可能不兼容,遇到报错的话,指定一个适配的版本就行:pip install psycopg2-binary==2.8.6

第二步:编写连接代码

你已经下载了三个关键证书文件:server-ca.pem、client-cert.pem、client-key.pem,先把它们放在一个容易找到的文件夹里(比如本地新建个./certs/目录),然后用下面的代码测试连接:

import psycopg2
from psycopg2 import OperationalError

def connect_gcp_postgres():
    conn = None
    try:
        # 替换成你自己的数据库信息
        conn = psycopg2.connect(
            dbname="你的数据库名称",
            user="你的数据库用户名",
            password="你的数据库密码",
            host="你的GCP实例公网IP/域名",
            port="5432",  # PostgreSQL默认端口,没改的话不用动
            sslmode="verify-ca",  # 验证服务器CA证书,确保连接安全
            sslrootcert="./certs/server-ca.pem",  # CA证书路径
            sslcert="./certs/client-cert.pem",    # 客户端证书路径
            sslkey="./certs/client-key.pem"       # 客户端密钥路径
        )
        print("✅ 数据库连接成功!")
    except OperationalError as e:
        print(f"❌ 连接失败:{e}")
    finally:
        # 记得用完关闭连接
        if conn:
            conn.close()

# 调用函数测试
connect_gcp_postgres()

必看的注意事项

  • 证书路径要准确:如果不确定路径是否正确,可以用import os; print(os.path.abspath("./certs/server-ca.pem"))来打印绝对路径,确保文件确实存在。
  • 密钥文件权限:如果是Linux/macOS系统,client-key.pem的权限必须设为600(只有自己能读写),不然psycopg2会拒绝使用:
chmod 600 ./certs/client-key.pem
  • GCP实例配置检查:别忘了在GCP控制台的SQL实例页面,确认:
    • 你的本地IP已经添加到「授权网络」里
    • 实例的SSL状态是「允许(需要客户端证书)」或者「强制」

内容的提问来源于stack exchange,提问作者mrt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:08:21