pgAdmin4连接WSL2中PostgreSQL后无法查看其他客户端创建的数据库
问题排查及解决方案
1. 调整PostgreSQL监听配置
修改WSL2中PostgreSQL的配置文件/etc/postgresql/12/main/postgresql.conf,将listen_addresses参数的值从'localhost'改为'*',允许所有地址的连接请求。
2. 放开客户端访问权限
编辑同目录下的pg_hba.conf文件,在文件末尾追加以下两行配置,允许外部客户端使用密码验证连接PostgreSQL:
host all all 0.0.0.0/0 md5 host all all ::/0 md5
配置修改完成后,执行命令重启PostgreSQL服务生效:sudo service postgresql restart
3. 更换pgAdmin连接地址为WSL2实体IP
WSL2的localhost与Windows系统的localhost并不完全互通,你需要先在WSL2终端执行ip addr show eth0,找到inet字段后对应的WSL2局域网IP(格式一般为172.x.x.x)。
在pgAdmin中新建服务器连接时,地址填写上述查询到的WSL2 IP,端口默认填5432,用户名密码填写你配置的PostgreSQL登录账号即可。
4. 验证账号权限
如果调整连接后还是看不到数据库,需要确认你pgAdmin连接使用的账号对目标数据库有访问权限:
- 登录psql执行
\l命令,查看所有数据库的所有者和权限配置 - 若权限不足,执行命令授权:
GRANT ALL PRIVILEGES ON DATABASE 目标数据库名 TO 登录用户名;
可选优化:固定WSL2 IP
WSL2默认每次重启都会更换IP,你可以通过修改Windows hosts文件添加WSL2 IP映射、或者配置开机自动端口转发脚本,避免每次连接都需要修改pgAdmin的连接地址。
内容的提问来源于stack exchange,提问作者Robert Jamborski
相关产品推荐
相关产品推荐

