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

如何将WSL安装的Apache Airflow连接到Windows环境的PostgreSQL

能否将WSL中的Apache Airflow连接到Windows本地PostgreSQL?

完全可行,以下是具体操作步骤:

1. 配置Windows本地PostgreSQL允许WSL访问

1.1 修改PostgreSQL监听地址

找到Windows上PostgreSQL安装目录下data文件夹中的postgresql.conf文件,修改以下配置:

listen_addresses = '*'

这会让PostgreSQL监听所有网络接口,允许外部(包括WSL)的连接请求。

1.2 配置访问控制规则

同样在data文件夹中打开pg_hba.conf文件,添加一行规则允许WSL子网的IP访问:

host    all             all             <WSL子网IP>/24        scram-sha-256

如果不确定WSL子网IP,可在WSL终端中执行ip addr show eth0,找到inet字段后的IP(例如172.18.0.2/16),取前两段加.0.0/24作为子网(比如172.18.0.0/24)。

也可以直接允许Windows主机IP的访问(更简单):在Windows CMD中执行ipconfig找到本地IPv4地址(例如192.168.3.10),然后添加:

host    all             all             192.168.3.10/32        scram-sha-256

注:scram-sha-256是PostgreSQL 14+的默认认证方式,若使用旧版本,替换为md5即可。

1.3 重启Windows PostgreSQL服务

打开Windows CMD,执行以下命令(版本号根据你的安装调整,例如postgresql-x64-16):

net stop postgresql-x64-16
net start postgresql-x64-16

2. 测试WSL到Windows PostgreSQL的连通性

在WSL终端中执行psql命令测试连接:

psql -h <Windows主机IPv4> -U <PostgreSQL用户名> -d <目标数据库名>

输入密码后若能成功进入PostgreSQL命令行,说明网络配置没问题。

3. 配置Airflow连接到Windows PostgreSQL

3.1 通过Airflow UI配置

  • 登录Airflow Web UI,进入Admin > Connections页面
  • 点击「+」新建连接,填写以下信息:
    • Connection Id:自定义名称(例如windows_postgres)
    • Connection Type:选择Postgres
    • Host:填写Windows主机的IPv4地址
    • Schema:要连接的数据库名
    • Login:PostgreSQL用户名(例如postgres)
    • Password:PostgreSQL用户密码
    • Port:5432(默认端口,若修改过则填对应值)
  • 点击「Test Connection」验证通过后保存。

3.2 通过环境变量配置(适合自动化场景)

在WSL终端中设置临时环境变量:

export AIRFLOW_CONN_WINDOWS_POSTGRES='postgres://<用户名>:<密码>@<Windows主机IP>:5432/<数据库名>'

若需要永久生效,将上述命令添加到~/.bashrc或~/.zshrc文件中,然后执行source ~/.bashrc。

4. 验证Airflow连接可用性

创建一个简单的测试DAG,放到Airflow的dags目录下:

from airflow import DAG
from airflow.providers.postgres.operators.postgres import PostgresOperator
from datetime import datetime

default_args = {
    'owner': 'airflow',
    'start_date': datetime(2024, 1, 1),
}

with DAG('test_windows_postgres_conn', default_args=default_args, schedule_interval='@daily', catchup=False) as dag:
    test_task = PostgresOperator(
        task_id='verify_postgres_connection',
        postgres_conn_id='windows_postgres',
        sql='SELECT version();'
    )

等待Airflow加载DAG后触发执行,若任务成功运行,说明连接配置正确。

注意事项

  • 确保Windows防火墙允许5432端口的TCP入站连接:在Windows Defender防火墙中添加入站规则,允许端口5432的连接请求。
  • 若WSL使用默认NAT网络模式,Windows主机IP可能会动态变化,建议给Windows设置静态IP以保证连接稳定。
  • 确认Windows上的PostgreSQL用户拥有目标数据库的连接权限,可执行以下SQL授权:
    GRANT CONNECT ON DATABASE <数据库名> TO <用户名>;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:15:04