postgresql - 强制 postgres_fdw 使用密码?

标签 postgresql foreign-data-wrapper

我有两个数据库设置为同一个 Postgresql 9.4 数据库集群的一部分,我正在尝试使用 postgres_fdw 从另一个数据库访问其中一个中的表。我已将其全部设置好并以 super 用户身份工作,但是当我尝试以普通用户身份访问外部表时,出现以下错误:

ERROR:  password is required
DETAIL:  Non-superuser cannot connect if the server does not request a password.
HINT:  Target server's authentication method must be changed.

现在我明白这是因为我为服务器设置了对某些子网(包括它自己的子网)的信任身份验证。但是,在我创建的 1 USER MAPPING 中,我确实指定了密码,希望这样做会强制它使用密码身份验证。显然没有这样的运气。

因此,我的问题是是否有任何方法可以解决这个有点繁琐的要求?有没有办法强制这个连接,或者特定用户,或者类似的使用密码验证?或者以某种方式禁用该要求?或者我唯一的选择是更改配置以要求密码,并处理任何中断的情况?

最佳答案

正如 Nick Barnes 在评论中指出的那样,pg_hba 允许针对特定用户使用不同的身份验证规则。因此,解决此问题的方法是简单地专门为这些 FDW 连接创建一个用户,并在 pg_hba.conf 中将该用户设置为需要密码。这样我在可信网络上的可信网络应用程序可以像往常一样继续连接,但 FDW 可以获得它所需的密码请求。

关于postgresql - 强制 postgres_fdw 使用密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34956807/

相关文章:

node.js - 更新多个列和值 Node postgres

sql - PostgreSQL 可以在两个 SQL Server 存储过程之间执行连接吗?

postgresql - 外部数据包装并发请求

postgresql - Postgres 如何从外部服务器传输所有枚举

sql - 函数不返回任何内容 Postgresql

java - 如何通过Hibernate创建数据库

sql - 查询时间统计 (PostgreSQL)

sql - 除了 Postgres 之外的数据库是否具有可与国外数据包装器相媲美的功能?

postgresql - 物化 View 和简单 View 如何处理 postgresql 中的外部数据表 (fdt)?

sql - 加入单行表 : subquery or cross join?