如何在Postgres中使用无密码的dblink

问题描述 投票:0回答:1

我主要关心的是脚本(Postgres 函数)中是否有密码,我正在寻找一种解决方案,如何避免在 Postgres 函数中使用密码。

我在函数中使用

dblink_connect()
时遇到问题。 当我在连接字符串中提供密码时,没有问题,但是当我不提供密码时,它会显示:

ERROR:  could not establish connection
DETAIL:  fe_sendauth: no password supplied

但是路径

.pgpass
中的
/var/lib/postgres/.pgpass
文件确实包含正确的密码。

我尝试使用 dblink 和 bash 中的 psql 使用以下命令连接到同一服务器中的另一个数据库:

psql –h localhost –U myuser –w remote_db_name

效果很好。

我的 .pgpass 文件确实有以下行:

Localhost:5432:*:myuser:mypassword

psql 似乎在 .pgpass 文件中找到了正确的密码,但 dblink 却没有。

postgresql password-encryption dblink
1个回答
0
投票

我遇到了同样的问题,发现如果您使用 dblink + postgres_fdw 的组合,实际上可以在 dblink 查询中摆脱硬编码数据库凭据。

使用 postgres_fdw 您可以创建一个外部服务器连接和一个映射到它的用户,之后您可以将服务器名称作为第一个参数。因此,通过这种方式,您无需对任何内容进行硬编码,也无需担心在 Airflow 中运行时屏蔽它。

这是一种简单的方法,在另一个问题的这个答案中有更详细的描述,而不是从那里复制粘贴代码。

© www.soinside.com 2019 - 2024. All rights reserved.