Postgresql
在 PostgreSQL 中同時啟用 ident 和 md5 身份驗證
在 Fedora 12 上,我正在為自己設置一個測試數據庫,而 pg_hba.conf 預設包含以下內容:
# TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all ident # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident
我想啟用 md5 登錄,以便名為“foo”的 PostgreSQL 使用者可以訪問名為“foo”的數據庫。但是,當我添加這一行並重新啟動 postgres 時:
local foo foo md5
使用我的正常使用者帳戶執行 psql -U ‘foo’ 仍然會產生以下消息:
psql: FATAL: Ident authentication failed for user "foo"
在我可以通過 md5 登錄到“foo”之前,我必須刪除第一條本地線路(它有 ident)。
如何在保持 ident 身份驗證的同時為“foo”啟用 md5 身份驗證?
https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html表示條目的順序很重要,具體來說:
由於每次連接嘗試都會按順序檢查 pg_hba.conf 記錄,因此記錄的順序很重要。通常,較早的記錄將具有緊密的連接匹配參數和較弱的身份驗證方法,而較晚的記錄將具有較寬鬆的匹配參數和更強的身份驗證方法。例如,可能希望對本地 TCP/IP 連接使用信任身份驗證,但對遠端 TCP/IP 連接需要密碼。在這種情況下,為來自 127.0.0.1 的連接指定信任身份驗證的記錄將出現在為更廣泛的允許客戶端 IP 地址指定密碼身份驗證的記錄之前。
(所以嘗試顛倒順序 - 將您添加的行放在頂部)