2

如何从远程计算机连接到 Azure PostgreSQL 数据库?

更新 2.我可以使用 WSL/Ubuntu 连接到数据库sudo psql,但我不能使用 plain psql。所以这是某个地方的权限问题......

更新。我发现我可以使用 PgAdmin4 从远程机器进行连接,但我无法使用 psql 进行连接。所以我想知道:我应该如何使用 psql 连接?

原始问题。我可以使用psqlAzure 中的 VM 连接到它,因此我知道数据库已启动并正在接受连接。但是当我尝试从我的家用机器连接时,使用完全相同的psql命令,它失败了:

psql --user=UUU --host=HHH DB

psql: server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.

更多信息......在 Azure 数据库的“连接安全”刀片上,我有

  • 添加了一个防火墙规则,开始 IP=0.0.0.0 和结束 IP=255.255.255.255
  • 将“强制 SSL 连接”设置为禁用
  • 打开“允许访问 Azure 服务”。

我的家用机器正在运行 Windows+WSL,我正在尝试使用 psql 10.11 版从 WSL/Ubuntu 18.04 进行连接。无论我尝试从家里还是从工作中连接,我都会遇到同样的问题,而且我没有阻止任何传出端口(我知道)。数据库正在运行 PostgreSQL 10。当我使用 10.10 从 Azure VM 连接(成功)时psql,它看起来像这样:

psql --user=UUU --host=HHH DB
Password for user UUU:

psql (10.10 (Ubuntu 10.10-0ubuntu0.18.04.1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
4

2 回答 2

2

也许您的 root 用户使用的 psql 二进制文件与您的用户不同。(你可以找到使用 which psqland sudo which psql

我遇到了同样的连接问题。就我而言,基本问题是 postgres 主要版本不匹配。

我正在使用版本 12 上的本地 psql 连接到版本 11 上的 Azure Postgresql。将本地计算机的 Postgres 版本降级到 11.6 为我解决了这个问题。

也许您的 root 用户正在使用 psql 10,而您的默认用户正在使用 psql 11 或 12。(您可以使用psql -Vand进行检查sudo psql -V

于 2020-01-16T10:58:15.697 回答
1

我遇到过同样的问题。错误消息很糟糕,没有帮助。

您可能使用的 psql 版本可能与您的 Azure DB 不同。它需要与 Azure 中安装的任何内容相匹配。

因此,如果您在 Azure 中预配了版本 10 的数据库,您可以为 pqsl 工具安装版本 10,或者执行完整的 Postgre 版本 10 安装。关键是 psql 和目标数据库之间需要匹配的主要版本。

于 2020-03-25T16:11:34.583 回答