如何讓 psql 提示輸入超級使用者 postgres 的密碼?
我在 Windows 7 上使用 PostgreSQL 9.6.2,當我從命令提示符啟動 psql 時:
psql -U myusername
它要求輸入密碼並登錄。但是,如果我這樣做:
psql -U postgres
它將以超級使用者權限直接登錄到主數據庫,而無需輸入任何密碼。如果我輸入:
psql -U postgres -W
然後它會要求輸入su密碼,這是我在一鍵安裝過程中設置的密碼。
我已經檢查了
pg_hba.conf
,它設置md5
為所有使用者,所有數據庫。我什至用 : 更改了數據庫的密碼postgres=# ALTER USER postgres PASSWORD 'myPassword';
,但無濟於事。問題是為什麼當我以普通使用者身份登錄時它會要求輸入密碼,而當我以超級使用者身份登錄時卻不會?這不是一個主要問題,因為在任何一種情況下我都可以訪問我的數據庫,但它似乎根本不安全。任何解決方法將不勝感激。
為什麼當我以普通使用者身份登錄時,它會要求輸入密碼,而當我以超級使用者身份登錄時卻不會?
它似乎根本不安全。
您缺少的一個小而重要的細節是,除了您(或您的 DBA 團隊)之外,任何人都應該被允許靠近數據庫伺服器,並且絕對不應該擁有 postgres 帳戶憑據。如果沒有這些,“以 postgres 身份登錄,無論是否使用密碼”都不會成為他們的選擇。
請記住:作為 DBA,您必須清理其他人造成的“混亂”,因此請始終為自己保留最大和最好的工具!
根據@a_horse_with_no_name 的評論,如果您有文件,請查看您的
pgpass.conf
(.pgpass
在 Linux 上)文件,看看是否有postgres
使用者條目:使用者主目錄中的 .pgpass 文件或 PGPASSFILE 引用的文件可以包含要在連接需要密碼時使用的密碼(否則未指定密碼)。在 Microsoft Windows 上,該文件名為 %APPDATA%\postgresql\pgpass.conf(其中 %APPDATA% 指的是使用者配置文件中的應用程序數據子目錄)。