Postgresql

如何讓 psql 提示輸入超級使用者 postgres 的密碼?

  • February 3, 2019

我在 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% 指的是使用者配置文件中的應用程序數據子目錄)。

引用自:https://dba.stackexchange.com/questions/165387