强制postgres_fdw使用密码?

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.

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

因此,我的问题是是否有办法绕过这个有点繁琐的要求?是否有办法强制这个连接、特定用户或类似的使用密码身份验证?或者有一种方法可以禁用该要求吗?或者我的唯一选择是更改配置以要求密码,并处理任何由此造成的破坏?


1
是的,pg_hba.conf 允许为特定用户设置不同的身份验证规则。 - Nick Barnes
2个回答

4

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


0

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

尝试通过TCP连接而不是使用本地套接字进行连接:将host=localhost添加到连接参数中,这通常可以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接