2016-01-22 93 views
0

我有兩個數據庫設置爲相同的Postgresql 9.4數據庫集羣的一部分,我試圖通過postgres_fdw從另一個表中訪問其中一個表。我擁有這一切成立,並以超級用戶身份工作,但是當我嘗試訪問外部表作爲一個普通用戶,我收到以下錯誤:強制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](http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html)允許特定用戶使用不同的身份驗證規則 –

回答

1

正如Nick Barnes在評論中指出的那樣,pg_hba允許特定用戶使用不同的身份驗證規則。因此,解決此問題的方法是簡單地爲這些FDW連接創建一個用戶,並將該用戶設置在pg_hba.conf中以要求輸入密碼。這樣,我信任的網絡上的受信任網絡應用程序可以像往常一樣繼續連接,但FDW可以獲得所需的密碼請求。

0

您不能強制FDW使用密碼:另一端的服務器必須請求密碼。本地套接字連接的通常默認值是無密碼。

嘗試通過TCP連接而不是使用本地套接字:將host=localhost添加到連接參數,通常會修復它。