远程访问Azure Postgres数据库

时间:2019-11-30 20:02:01

标签: azure azure-virtual-network azure-database-postgresql

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

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

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

原始问题。我可以使用psql从Azure内部的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,并且我正在尝试从WSL / Ubuntu 18.04连接 使用psql版本10.11。无论我是尝试在家中还是工作时都遇到相同的问题,并且我没有阻止任何传出端口(据我所知)。 该数据库正在运行PostgreSQL 10。 当我使用psql 10.10从Azure VM(成功)连接时,它看起来像这样:

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)

2 个答案:

答案 0 :(得分:2)

也许您的root用户使用与您的用户不同的psql二进制文件。 (您可以使用 which psqlsudo which psql

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

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

也许您的root用户使用的是psql 10,而默认用户使用的是psql 11或12。(您可以使用psql -Vsudo psql -V进行检查)

答案 1 :(得分:1)

我有同样的问题。错误消息很糟,并且有0个帮助。

您可能正在使用与Azure数据库不同的psql版本。它需要匹配Azure中安装的任何内容。

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