我有两个数据库设置为同一个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
中,我确实指定了密码,希望这样做会强制它使用密码验证。显然没有这样的运气。
因此,我的问题是,是否有任何解决这个有点繁重的要求?有没有办法强制此连接,或特定用户等使用密码验证?或者某种方式来禁用该要求?或者我唯一的选择是更改配置以要求密码,并处理任何中断的事情?
答案 0 :(得分:1)
正如Nick Barnes在评论中指出的那样,pg_hba允许特定用户使用不同的身份验证规则。因此,此问题的解决方案是简单地创建专门用于这些FDW连接的用户,并在pg_hba.conf中设置该用户以要求密码。这样,我信任的网络上受信任的网络应用程序可以像往常一样继续连接,但FDW可以获得所需的密码请求。
答案 1 :(得分:0)
您无法强制FDW使用密码:另一端的服务器必须请求密码。本地套接字连接的通常默认值是无密码。
尝试通过TCP连接而不是使用本地套接字:将host=localhost
添加到连接参数,通常会修复它。