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

WSL中Airflow无法连接Windows本地Postgres:连接被拒绝

解决WSL Airflow连接Windows主机PostgreSQL失败问题

问题根源

WSL环境中的localhost指向Ubuntu自身的环回地址,并非Windows主机的本地地址,直接用localhost连接Windows上的PostgreSQL必然触发连接拒绝错误。

分步解决方案

1. 获取Windows主机的局域网IP

在Windows命令提示符(CMD)中执行:

ipconfig

找到以太网适配器WSL或本地连接的IPv4地址(格式如192.168.x.x),记下来备用。

2. 配置PostgreSQL允许远程连接

  • 编辑PostgreSQL配置文件postgresql.conf(Windows路径通常为C:\Program Files\PostgreSQL\<你的版本号>\data\postgresql.conf),修改以下参数:
    listen_addresses = '*'  # 允许所有IP访问,也可指定Windows主机IP
    
  • 编辑pg_hba.conf(同目录下),添加一行规则允许WSL网段连接:
    host    all             all             <WSL子网段>/24        scram-sha-256
    
    (测试阶段可临时用0.0.0.0/0允许所有IP连接,生产环境需限制网段)
  • 重启Windows上的PostgreSQL服务:打开「服务」面板,找到PostgreSQL <版本号>,右键选择「重启」。

3. 配置Airflow连接参数

方式一:修改airflow.cfg文件

找到WSL中的airflow.cfg(通常在~/airflow/目录下),修改sql_alchemy_conn参数:

sql_alchemy_conn = postgresql+psycopg2://<Postgres用户名>:<密码>@<Windows主机IP>:5432/carPrices

保存后执行初始化命令:

airflow db init

方式二:Airflow UI配置连接

  • 登录Airflow WebUI(localhost:8081),进入「Admin」→「Connections」→「+」新建连接
  • 配置项:
    • Conn Id:自定义(如postgres_carprices)
    • Conn Type:选择Postgres
    • Host:填入Windows主机的局域网IP
    • Schema:carPrices
    • Login:PostgreSQL用户名
    • Password:PostgreSQL密码
    • Port:5432
  • 点击「Test Connection」验证连接。

4. 额外检查项

  • 确保Windows防火墙允许PostgreSQL的5432端口入站,或临时关闭防火墙测试连通性
  • 在WSL中执行ping <Windows主机IP>,确认网络连通
  • 验证PostgreSQL用户具备远程连接权限,可先用超级用户(如postgres)测试连接

内容的提问来源于stack exchange,提问作者ABUBAKAR MUHAMMED MUKTAR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:40:29