我有两个数据库设置为同一个 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/