无法从 Windows 10 主机连接 WSL2 Ubuntu 中安装的 PostgreSQL

Troubles connecting PostgreSQL installed in WSL2 Ubuntu from the Windows 10 host

我在从 Windows 10 主机连接到安装在 WSL2 Ubuntu 中的 PostgreSQL 时遇到了很大的麻烦。

这是我到目前为止所做的。

  1. 为 postgres 用户设置密码。
  2. 设置如下pg_hpa.conf

    local all postgres md5

    host all all 0.0.0.0/0 md5

  3. 设置如下postgresql.conf

    listen_addresses = '*'

  4. 测试成功,我可以连接 psql -U postgres - 所以密码应该设置正确。

当我尝试从 Windows 10 主机使用 pgAdmin 或 psql 进行连接时,出现以下错误。

error: could not connect to server: FATAL: password authentication failed for user "postgres"

我还可以更改 pg_hpa.conf 或其他可能有帮助的 PostgreSQL 配置吗?

我在想我可能与 WSL2 有自己的 IP 有关,即使来自主机的连接看起来来自本地主机也是如此。似乎已建立连接,但由于某种原因,当它不是从 Ubuntu.

内部建立时,身份验证失败

我后来用 nc -l 5432 进行了测试,由于某种原因,端口 5432 没有到达本地主机上的 WSL2,但到达了 WSL-2 IP。如果我使用任何其他自由端口,例如5434(在 Windows 和 WSL-2 上都是免费的)它工作正常,我可以通过 windows.

上的本地主机连接到 WSl-2 上的 PostgreSQL 服务

自最初发布的问题以来,我没有更改任何选项 - 只有端口。

更新:原来 Windows 上旧安装的 postgres 确实有一个进程正在侦听端口 5432。这个原因解释了一切。 ..:/

正如原发帖人所指出的,确保您没有 Windows 服务已经 运行 并且正在监听该端口。在我的例子中,它是作为 Windows 服务安装的 PostgreSQL 实例。无论底层网络支持如何,您似乎都可以让 process/service 在 Windows 中侦听端口 5432,以及在 WSL2 中侦听端口 5432 的单独 Linux 进程。

停止 Windows PostgreSQL 服务还不够。从 Windows pgAdmin4 安装程序连接失败。我还从 Microsoft 服务控制台禁用了该服务。

我还需要停止和启动 WSL2 postgresql。只有这样我才能成功地从我的 Windows pgAdmin4 安装程序连接到 WSL2 postgreSQL