登录 主页

windows + wsl 解决 pgAdmin 链接的问题

2025-12-18 05:44PM

我使用的是windows+wsl系统,我的pgAdmin已经启动了,在wsl里面启动项目,就提示说:sql: database is closed

解决方法如下:

1. 在 windows powershell 里面执行

services.msc

确认是否存在 postgresql-x64-xx

可以发现是存在的

2. 在 wsl 里面运行下面这个命令

$ cat /etc/resolv.conf | grep nameserver

来获取 windows 在 wsl 中的访问 IP

$ cat /etc/resolv.conf | grep nameserver

nameserver 172.29.112.1 

3. 修改项目里面的数据库链接配置

host=172.29.112.1
port=5432
user=你的用户名
password=你的密码
dbname=你的数据库名
sslmode=disable #非常关键,本地开发几乎必加

4.  重启  postgresql-x64-16

4.1 点击 win + r

4.2 输入 services.msc

4.3 找到 PostgreSQL Server 16

右键点击 "重新启动"

5. 重启之后回到 wsl,测试是否可以链接数据库

$ psql -h 172.29.112.1 -U postgres -d your_db

发现报错了,是因为我在wsl中还没有postgres,所以需要先安装

$ sudo apt update
$ sudo apt install postgresql-client -y

确认是否安装成功

$ psql --version

6. 设置 windows postgresql 允许 wsl 访问

6.1 打开文件夹,找到 postgres 的配置目录

$ C:\Program Files\PostgreSQL\16\data\ 

6.2 修改 postgres.conf

使用管理员打开该文件,找到下面这一行代码

listen_addresses = '*'

如果前面有#,需要把#删掉

6.3 修改 pg_hba.conf

在文件末尾加一行

host    all     all     172.16.0.0/12     md5

6.4 再次重启 postgresql-x64-16 ,过程参考第4步

7. 在 wsl 中再次链接 postgres 发现还是报错了

$ psql --version
psql (PostgreSQL) 16.11 (Ubuntu 16.11-0ubuntu0.24.04.1)
$ psql -h 172.29.112.1 -U postgres -d dongtaipaifang
psql: error: connection to server at "172.29.112.1", port 5432 failed: Connection timed out
        Is the server running on that host and accepting TCP/IP connections?

主要是因为是 Windows PostgreSQL 没有监听 WSL 网段,或 Windows 防火墙阻断了 5432

解决方法:

7.1 点击 win + R

7.2 输入 wf.msc

7.3 点击"入站规则" -> "新建规则"

7.4 类型: 端口

7.5 TCP -> 5432  -> 下一步

7.6 允许链接  -> 下一步

7.7 勾选: 域/专用/公用  -> 下一步

7.8 名称

PostgreSQL 5432 for WSL

7.9 再次重启 postgresql-x64-16 ,过程参考第4步

8. 再次回到 wsl 测试是否可以链接

$ psql -h 172.29.112.1 -U postgres -d dongtaipaifang

Password for user postgres:
psql (16.11 (Ubuntu 16.11-0ubuntu0.24.04.1))
Type "help" for help.

dongtaipaifang=#

就发现已经可以了.

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论