![](/img/trans.png)
[英]Connecting PostgreSQL installed in docker inside Hyper-V Ubuntu from Windows 10 PgAdmin
[英]Troubles connecting PostgreSQL installed in WSL2 Ubuntu from the Windows 10 host
我在从 Windows 10 主机连接到安装在 WSL2 Ubuntu 中的 PostgreSQL 时遇到了很大的麻烦。
这是我到目前为止所做的。
在 pg_hpa.conf 中设置以下内容
local all postgres md5
host all all 0.0.0.0/0 md5
在postgresql.conf中设置如下
listen_addresses = '*'
测试成功,我可以连接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 实例。 无论底层网络支持如何,您似乎都可以在 Windows 中的端口 5432 上侦听一个进程/服务,以及一个单独的 Linux 进程在 WSL2 的端口 5432 上侦听。
仅仅停止 Windows PostgreSQL 服务是不够的。 从 Windows pgAdmin4 安装程序连接失败。 我还从 Microsoft 服务控制台禁用了该服务。
我还需要停止并启动 WSL2 postgresql。只有这样我才能成功地从我的 Windows pgAdmin4 安装程序连接到 WSL2 postgreSQL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.