2012-07-11 141 views
19

如何爲同一主機/數據庫/用戶規則設置多種身份驗證方法?我希望能夠使用sudo -u postgres psql -U postgres(無需輸入PostgreSQL密碼)和psql -U postgres --password登錄到我的postgres用戶。在pg_hba.conf中有如下內容:PostgreSQL多重身份驗證方法

local all    postgres      md5 
local all    postgres      peer 

我只能得到一種方法或其他同時工作。

謝謝。

(我正在使用PostgreSQL 9.1)。

回答

21

沒有。對於任何給定的配置,只支持一種auth方法。

我很喜歡它,如果Pg可以支持回退認證,如果一個ident檢查失敗,它允許md5認證,而不是。儘管如此,它目前不支持這一點,而且我懷疑(我沒有證實)需要更改協議來支持它。

可以做的是將密碼存儲在postgres系統用戶的$HOME/.pgpass文件中。在0600模式下,它只能由postgres用戶和root讀取,它們都可以直接訪問數據庫文件和配置。這樣你就可以輕鬆管理 md5認證。在某些系統上,您可能必須先設置併爲postgres用戶創建主目錄,然後才能執行此操作。請參閱getent passwd postgres以查看postgres用戶是否有homedir,如果是,那麼它在哪裏。

UPDATE:用於讀取$HOME/.psqlrc - 這是有用的,但.pgpass是適合密碼存儲)

+0

參見http://www.postgresql.org/docs/9.5/static/libpq-pgpass。 html的細節 – 2016-05-04 08:24:44