4

我在从 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 有关,即使来自主机的连接似乎来自 localhost。似乎建立了连接,但是当它不是在 Ubuntu 中建立时,由于某种原因身份验证失败。

4

2 回答 2

2

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

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

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

于 2020-06-11T13:19:12.237 回答
0

正如原始海报所指出的那样,确保您没有已在该端口上运行和侦听的 Windows 服务。就我而言,它是作为 Windows 服务安装的 PostgreSQL 实例。无论底层网络支持如何,您似乎都可以在 Windows 中的端口 5432 上侦听进程/服务,以及在 WSL2 的端口 5432 上侦听的单独 Linux 进程。

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

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

于 2021-11-16T01:25:23.807 回答