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

WSL(Ubuntu)中FastAPI连接Windows PostgreSQL遭拒问题求助

WSL连接Windows PostgreSQL 连接拒绝问题排查建议

核心误区先明确

WSL中的localhost指向的是WSL自身的环回地址,而非Windows主机,这是导致连接失败的高频原因,优先从以下步骤排查:

1. 替换连接的Host地址

  • 不要用localhost,改用Windows主机的局域网IP地址(比如192.168.x.x,可在Windows命令行通过ipconfig查看以太网适配器的IPv4地址),或者WSL 2支持的特殊地址host.docker.internal。
  • 修改代码中的host参数:
conn = psycopg2.connect(host='192.168.xx.xx', database='fastapi', password='xxxx', cursor_factory=RealDictCursor)

2. 验证PostgreSQL监听配置

  • 打开postgresql.conf(通常在PostgreSQL安装目录/data/下),确认listen_addresses设置为*或包含Windows主机IP,而非仅localhost:
    listen_addresses = '*'
    
  • 重启Windows服务中的postgresql-x64-xx服务使配置生效

3. 检查pg_hba.conf访问规则

  • 打开pg_hba.conf,添加允许WSL子网访问的规则(WSL 2子网通常为172.16.0.0/12,可在WSL中执行ip addr查看eth0的IP确认):
    host    all             all             172.16.0.0/12            scram-sha-256
    
  • 重启PostgreSQL服务

4. 端口连通性测试

  • 在WSL终端执行nc -zv 你的WindowsIP 5432或telnet 你的WindowsIP 5432,测试端口是否可连通:
    • 若不通,确认Windows防火墙已开放5432端口(需允许私有网络访问,覆盖WSL子网)
    • 可临时关闭防火墙验证,排除防火墙干扰

5. 确认PostgreSQL服务状态

  • 在Windows命令行执行pg_ctl status -D "你的PostgreSQL数据目录",或在服务列表中确认postgresql-x64-xx服务处于启动状态

6. WSL版本适配

  • 执行wsl --list --verbose查看WSL版本:
    • WSL 1可直接使用localhost,若仍失败需检查其他配置
    • WSL 2必须使用Windows主机IP或host.docker.internal

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:12:16