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

Google Colab连接本地PostgreSQL出现psycopg2.OperationalError连接拒绝如何解决?

解决Colab连接本地PostgreSQL失败的问题

核心原因

Google Colab运行在云端虚拟机中,你代码里的localhost指向的是Colab的虚拟机,而非你的Mac本地机器——云端环境无法直接访问本地局域网内的服务,这是导致连接被拒绝的根本原因。另外你之前的postgresql.conf配置中,listen_addresses = '*'前面还带着注释符号#,这行配置实际未生效,也是问题之一。


可行解决方案

方案1:用ngrok做端口转发(推荐)

这是最便捷的临时连接方式,无需修改网络防火墙规则:

  1. 下载ngrok到你的Mac,解压后在终端运行:
    ./ngrok tcp 5432
    
    运行后会生成一个公网转发地址,格式类似tcp://0.tcp.ngrok.io:12345,记下其中的域名(如0.tcp.ngrok.io)和端口(如12345)。
  2. 修正Postgres配置:
    • 打开postgresql.conf,把#listen_addresses = '*'的#删掉,保存后重启Postgres服务(通过Postgres.app点击重启)。
    • 简化pg_hba.conf,保留以下规则即可(重复的trust规则可以删除,避免冲突):
      local   all             all                                     trust
      host    all             all             127.0.0.1/32            trust
      host    all             all             ::1/128                 trust
      host    all             all             0.0.0.0/0               md5
      
  3. 修改Colab中的连接代码:
    from sqlalchemy import create_engine
    # 替换成ngrok的地址、端口,以及你的用户名、密码、数据库名
    engine = create_engine('postgresql://myusrname:mypassword@0.tcp.ngrok.io:12345/mydb')
    
  4. 运行%sql $engine.url即可尝试连接。

方案2:使用Colab本地运行时

如果希望Colab直接调用本地环境:

  1. 在Colab界面右上角点击「连接」→「连接到本地运行时」。
  2. 按照提示在Mac终端运行对应的Jupyter命令,建立Colab与本地Jupyter服务的连接。
  3. 连接成功后,Colab的localhost会指向你的Mac,直接使用原来的连接代码即可。

额外提醒

  • 不要直接将本地PostgreSQL暴露到公网(比如直接用公网IP开放端口),存在安全风险,ngrok是临时转发的安全方式。
  • 确认Mac系统防火墙没有拦截5432端口的入站连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:00:25