从Windows上的DBeaver无法访问WSL2上的PostgreSQL:"连接被拒绝:无法连接"。

7

我正在尝试使用Postgres并从DBeaver访问它。

  • Postgres已安装在wsl2(Ubuntu 20)中
  • DBeaver已安装在Windows 10中

根据此文档,如果你从Windows访问在Linux上运行的应用程序,则可以使用localhost

然而...

enter image description here

连接被localhost拒绝。我不知道这条消息是什么意思:Connection refused: connect

有人看到这个问题的潜在原因吗?任何建议将不胜感激。

注意:

  • 密码应该没问题。当我在wsl2中使用psql并输入密码时,psql可用且密码正确。
  • 我没有在Windows上安装Postgres。它只存在于wsl2中。
2个回答

6

我自己找到了解决方法。

我只需要在wsl2(Ubuntu)上允许TCP连接,然后重新启动postgres。

sudo ufw allow 5432/tcp
# You should see "Rules updated" and/or "Rules updated (v6)"
sudo service postgresql restart

我没有改变IPv4/IPv6连接信息。这是我在pg_hba.conf中看到的内容:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

1
那么你应该继续并接受自己的答案。这样,将来遇到相同问题的提问者就会知道有一个成功的答案。它还将从未回答的队列中移除。请不要让已成功回答的问题保持为未回答状态。 - Belayer
@Belayer好的,我会等一天后再接受自己的答案。SO不允许我立即接受自己的答案。 - Hiroki
在我的WSL2中运行命令“sudo ufw allow 5432/tcp”后,我仍然无法连接到我的Windows 10中的Dbeaver... - Hugo1280
@Hugo1280 遇到了同样的问题,有什么解决方法吗? - Mayukh Nair
@MayukhNair,请按照此文章的说明操作:https://www.cybertec-postgresql.com/en/postgresql-on-wsl2-for-windows-install-and-setup/ 如果仍然无法正常工作,则尝试使用文章中提到的md5而不是scram-sha-256 - Hugo1280
1
在允许 5432/tcp 之后,我必须在 WSL 外部使用 wsl --shutdown 才能连接。 - The Order of Patterns

0
同样的问题我解决了。
顺便解释一下:
WSL作为一个Docker运行。
在WSL内部,localhost对于在WSL中运行的应用程序是有效的。
在Windows外部,localhost对于在Windows中运行的应用程序是有效的。
第一种方式:在WSL下安装dbeaver并从那里运行:localhost作为'host'将被找到。
第二种方式:如果你已经在Windows上安装了dbeaver(或者在我的情况下是pgadmin4),你必须使用docker在Windows上的地址来找到它。
ip addr show eth0   -> inet 172.21.35.114  

将此地址添加到您的 pg_hba.conf 文件中。
      host    all             all             172.21.35.114/32        md5
      host    all             all             172.21.32.1/32          md5

第二个IP是WSL和WIN之间的链接。当我从WIN启动dbeaver时,它告诉我这个IP也丢失了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接