远程访问Azure Postgres数据库

远程访问Azure Postgres数据库,azure,azure-virtual-network,azure-database-postgresql,Azure,Azure Virtual Network,Azure Database Postgresql,如何从远程计算机连接到Azure PostgreSQL数据库 更新2。我可以使用sudo psql从WSL/Ubuntu连接到数据库,但我不能使用plainpsql。所以这是某个地方的权限问题 更新。我发现我可以使用PgAdmin4从远程计算机进行连接,但无法使用psql进行连接。所以我想知道:我应该如何使用psql连接 原始问题。我可以从Azure中的VM使用psql连接到它,因此我知道数据库已启动并接受连接。 但是,当我尝试使用完全相同的psql命令从家用计算机连接时,它失败了: psql

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

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

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

原始问题。我可以从Azure中的VM使用
psql
连接到它,因此我知道数据库已启动并接受连接。 但是,当我尝试使用完全相同的
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)

可能您的根用户使用的psql二进制文件与您的用户不同。(您可以使用
哪个psql
sudo哪个psql

我遇到了同样的连接问题。在我的例子中,基本问题是postgres的主要版本不匹配

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


可能您的根用户正在使用psql 10,而您的默认用户正在使用psql 11或12。(您可以使用
psql-V
sudo psql-V
检查此问题)

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

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


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

请转到“Azure数据库for PostgreSQL server-服务器日志”刀片,检查当您尝试从WSL主机连接时发生了什么?当我尝试从WSL主机连接时,服务器日志中根本没有添加任何内容。当我从Azure VM连接时,日志中会出现正常的“连接已接收,连接已授权”行。您是否尝试过使用类似PgAdmin4的东西而不是psql?如果没有,请您尝试一下并分享详细信息好吗?我刚刚安装了PgAdmin4(这是有史以来第一次),它工作了——我可以从我的本地机器连接!所以这一定与我如何使用psql有关……我刚刚尝试从本地机器连接,使用PgAdmin4附带的psql。它工作得很好。这非常有用——但我选择了核选项,重新安装了Ubuntu,所以我还没有能够测试它。这是正确的答案。Postgre抛出的错误是完全无用的。