Apache Airflow中psycopg2.OperationalError连接问题求助
解决WSL中Airflow连接PostgreSQL的psycopg2.OperationalError问题
排查及修复步骤
确认PostgreSQL服务状态
在Windows主机的服务管理器中,检查PostgreSQL服务是否处于运行状态,未启动则手动启动并设置为自动启动。调整PostgreSQL监听配置
找到Windows主机上PostgreSQL的配置文件(通常路径为C:\Program Files\PostgreSQL\<版本号>\data\postgresql.conf),将listen_addresses参数修改为'*',允许所有IP地址访问,修改后重启PostgreSQL服务。配置Windows防火墙规则
在Windows防火墙中添加入站规则,允许TCP协议的5432端口通信,确保WSL环境的IP可以正常访问主机上的PostgreSQL服务。验证网络连通性
在WSL终端执行以下命令,检查到目标主机IP的网络和端口是否可达:ping 172.25.16.1 telnet 172.25.16.1 5432如果telnet无法连接,说明网络或端口存在阻塞,需优先解决网络问题。
检查数据库用户权限与访问规则
- 通过pgAdmin登录数据库,执行SQL为
postgres用户授予目标数据库权限:GRANT ALL PRIVILEGES ON DATABASE random_data TO postgres; - 打开
pg_hba.conf文件(与postgresql.conf同目录),添加允许WSL网段访问的规则,例如:host random_data postgres 172.25.16.0/24 scram-sha-256
修改完成后重启PostgreSQL服务。
- 通过pgAdmin登录数据库,执行SQL为
尝试替换主机地址
WSL2环境中可以使用host.docker.internal直接访问Windows主机服务,修改连接代码尝试:conn = psycopg2.connect( dbname="random_data", user="postgres", password="password", host="host.docker.internal", port="5432")
内容的提问来源于stack exchange,提问作者Oksana Sheremet
相关产品推荐
相关产品推荐

