从DBeaver(在Windows上)运行PostgreSQL(在wsl2上)失败:“连接拒绝:连接”

3gtaxfhh  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(2)|浏览(354)

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

  • Postgres安装到wsl 2(Ubuntu 20)
  • DBeaver已安装到Windows 10

根据this doc,如果您从Windows访问在Linux上运行的应用程序,则可以使用localhost
然而...

连接被拒绝localhost。我也不知道这条信息是什么意思:Connection refused: connect
有没有人看到这其中的潜在原因?任何建议将不胜感激。
注意事项:

  • 密码应该没问题。当我在wsl 2中使用psql并输入密码时,psql可以使用密码
  • 我在Windows端没有Postgres。它只存在于wsl 2上。
cuxqih21

cuxqih211#

我自己找到了解决办法。
我只需要在wsl 2(Ubuntu)上允许TCP连接,然后重新启动postgres。

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

我没有更改IPv4/IPv6连接信息。以下是我在pg_hba.conf中看到的:

  1. # IPv4 local connections:
  2. host all all 127.0.0.1/32 md5
  3. # IPv6 local connections:
  4. host all all ::1/128 md5
lf3rwulv

lf3rwulv2#

我解决了同样的问题。
顺便解释一下:
WSL作为Docker运行。
在wsl中,localhost对于在wsl中运行的应用程序是有效的。
在外部,在windows中,localhost对于在windows中运行的应用程序有效。
第一种方式:在WSL下安装dbeaver并从那里运行它:localhost作为'主机'将被发现。
第二种方式:如果你已经在windows上安装了dbeaver(或者我的例子中的pgadmin4),你必须使用the adress of the docker on win。要查找它,请执行以下操作:

  1. ip addr show eth0 -> inet 172.21.35.114

将此地址添加到您的pg_hba.conf

  1.       host all all 172.21.35.114/32 md5
  2.       host all all 172.21.32.1/32 md5

第二个IP是WSL和WIN之间的链路。我得到了它,当我开始dbeaver从胜利,告诉我这一个也失踪。

展开查看全部

相关问题