在Ubuntu 12.04上安裝PostgreSQL 9.1後,我設置了「postgres」超級用戶帳戶的密碼。我希望所有用戶必須輸入自己的密碼登錄電子時,在這就是爲什麼我配置的pg_hba.conf像這樣:對postgresql超級用戶沒有密碼提示
#Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
我進行這些更改後重新啓動PostgreSQL的。當我這樣做psql -U testuser
我被要求輸入密碼,但是當我使用「postgres」帳戶登錄時,如psql -U postgres
,我沒有密碼提示並登錄。 如果我用psql -U postgres -W
強制密碼提示,我可以登錄輸入正確的密碼或者完全不輸入。輸入錯誤的密碼會被拒絕。
任何人都可以向我解釋爲什麼會發生這種情況嗎?
在相關說明:我看到很多例子,其中人們使用ident作爲「postgres」用戶的身份驗證方法,認爲要成爲「postgres」用戶需要機器的root密碼。我認爲推理是,如果攻擊者獲得root訪問權限,那麼你的任務就完成了。我寧願使用密碼登錄,但密碼與root密碼不同。我爲不同的事情準備了不同的密碼。這是否合理?
輸出的grep '^[^#]' pg_hba.conf
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5
它在.pgpass文件中,謝謝!你引用的pg_hba.conf文件的一部分讓我感到困惑。我可以做什麼來提供非交互訪問而不讓postgres在沒有密碼的情況下登錄? – Basil 2012-08-14 18:50:09
爲此,應該找到對等身份驗證,假設您不允許用戶使用postgres帳戶登錄到服務器。 – Andrew 2012-08-14 23:53:28
我在Windows中注意到了相同的行爲。在PgAdminIII中添加新連接後,在連接postgres時,我不再提示psql輸入密碼。罪魁禍首是pgpass.conf,由PgAdminIII在%APPDATA%\ postgresql文件夾中自動創建。謝謝丹尼爾。 – 2014-02-18 21:35:07