如何从Windows端pgAdmin连接WSL中的PostgreSQL并解决10061连接报错
Windows pgAdmin连接WSL内PostgreSQL服务报错解决方案
你遇到的10061连接拒绝报错原文翻译如下:
无法连接到服务器:连接被拒绝 (0x0000274D / 10061) 服务器是否运行在主机 "localhost" (::1) 上并接受 5432端口的TCP/IP连接? 无法连接到服务器:连接被拒绝 (0x0000274D / 10061) 服务器是否运行在主机 "localhost" (127.0.0.1) 上并接受 5432端口的TCP/IP连接?
该报错是WSL2网络特性与PostgreSQL默认配置共同导致的,按以下步骤操作即可解决:
- 步骤1:修改PostgreSQL监听配置
进入WSL终端,编辑PostgreSQL主配置文件,路径随版本变化,以14版本为例执行命令:sudo vi /etc/postgresql/14/main/postgresql.conf
找到listen_addresses配置项,将默认值localhost修改为'*',允许监听所有网卡的连接请求。 - 步骤2:修改客户端访问授权规则
编辑同目录下的pg_hba.conf文件,在末尾添加以下规则,放行外部访问请求:
host all all 0.0.0.0/0 scram-sha-256
对安全性要求高的用户可以将0.0.0.0/0替换为WSL对应的Windows网关IP段,避免所有IP都可访问。
修改完成后执行sudo service postgresql restart重启PostgreSQL服务使配置生效。
- 步骤3:获取WSL虚拟网卡IP
在WSL终端执行ip addr show eth0,找到inet字段后的IP地址,例如172.26.58.123,该地址即为WSL当前的内网IP。 - 步骤4:配置pgAdmin连接
打开pgAdmin新建服务器连接,主机地址填写上一步获取的WSL IP,端口保留默认5432,填入PostgreSQL的用户名密码即可完成连接。
可选优化(避免每次重启WSL都修改IP)
WSL每次重启后虚拟网卡IP会自动变更,不想每次查询IP的话可以在Windows侧配置端口转发:
注意:端口转发命令需要以管理员身份运行PowerShell执行,否则会配置失败
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=5432 connectaddress=替换为你的WSL IP connectport=5432
配置完成后Windows侧就可以直接用localhost:5432连接WSL内的PostgreSQL服务,WSL重启后IP变更时重新执行该命令更新转发规则即可。
内容的提问来源于stack exchange,提问作者Alexander Pikeev
相关产品推荐
相关产品推荐

