5

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

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.

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

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

4

2 回答 2

4

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

于 2016-01-26T17:34:32.817 回答
0

您不能强制 FDW 使用密码:另一端的服务器必须请求密码。本地套接字连接的通常默认设置是没有密码。

尝试通过 TCP 连接而不是使用本地套接字:添加host=localhost到连接参数,这通常会修复它。

于 2016-01-24T06:46:07.300 回答