从Windows端DBeaver连接WSL2中PostgreSQL提示Connection refused问题
报错含义解释
Connection refused: connect 代表你的DBeaver请求已经发送到指定地址的对应端口,但目标端口没有服务在监听,或服务配置了访问规则直接拒绝了本次连接请求。
常见问题原因
- PostgreSQL默认仅监听WSL2内部的回环地址127.0.0.1,未对外开放监听端口,Windows侧的请求无法触达PostgreSQL服务
- PostgreSQL的访问控制配置未放行Windows侧的IP网段,即使请求到达服务也会被直接拒绝
- WSL2内置网络映射规则异常,localhost转发未生效
- WSL2 Ubuntu系统的防火墙未放行PostgreSQL默认的5432端口
解决方案
步骤1:修改PostgreSQL监听配置
在WSL2 Ubuntu中找到PostgreSQL配置文件,默认路径为/etc/postgresql/<pg版本号>/main/postgresql.conf,例如14版本路径为/etc/postgresql/14/main/postgresql.conf。
修改配置项:
listen_addresses = '*'
保存后退出编辑器。
步骤2:修改访问控制规则
在同目录下找到pg_hba.conf文件,在文件末尾新增如下行,放行所有IPv4地址的访问请求:
host all all 0.0.0.0/0 scram-sha-256
如果你的PostgreSQL用的是md5加密方式,将最后的scram-sha-256替换为md5即可。
步骤3:重启PostgreSQL服务
执行命令让配置生效:sudo service postgresql restart
步骤4:放行系统端口
如果你的WSL2 Ubuntu开启了ufw防火墙,执行命令放行5432端口:sudo ufw allow 5432/tcp
步骤5:配置DBeaver连接
如果localhost仍无法连接,在WSL2中执行ip a show eth0,查询eth0网卡的inet网段IP(通常为172开头的地址),在DBeaver连接配置中使用该IP作为主机地址,端口默认填5432即可正常连接。
内容的提问来源于stack exchange,提问作者Hiroki
相关产品推荐
相关产品推荐

