2013-07-09 32 views
0

我想設置我的本地postgresql,所以它沒有密碼。我明白,這必須在pg_hba.conf文件中完成,並承認該文件我必須是postgres用戶。但要成爲postgres用戶,我必須登錄su postgres並輸入我沒有的密碼。在OSX中更改我的postgresql密碼?

任何解決方案(我在OSX上)?

回答

4

您在混淆關於安全模型的幾個不同概念。

有一個postgres操作系統用戶,PostgreSQL服務器爲了隔離它的數據文件並在出現安全漏洞或應用程序錯誤時限制損壞而運行PostgreSQL服務器。爲安全起見,PostgreSQL不會以root的身份運行。此用戶通常沒有密碼,但您可以通過使用sudo的root帳戶更改爲此密碼 - 您可以通過sudo向此用戶提供類似sudo -i -u postgres的內容。

還有一個postgres數據庫用戶,默認數據庫超級用戶。此用戶默認通常沒有密碼,但pg_hba.conf允許postgres操作系統用戶使用peer身份驗證連接爲postgres PostgreSQL用戶。

如果你想使你的postgres數據庫用戶使用一個密碼,您可以更改配置,所以你可以psql -U postgres來自任何系統的用戶帳號:

  • ALTER USER postgres WITH ENCRYPTED PASSWORD 'blahblah';
  • 編輯pg_hba.conf(「HBA」是「基於主機的身份驗證」)使用md5身份驗證的localhost連接。
  • 重新啓動或重新加載的PostgreSQL

同樣,如果你想允許任何系統用戶以任何數據庫用戶連接不使用密碼,則必須修改pg_hba.conf並設置trustlocal認證模式和host連接類型。請僅使用trust驗證進行測試。

要了解更多信息,請參閱the client authentication chapter in the PostgreSQL documentation

+0

感謝您的解釋。但是當我執行'psql -U postgres'命令時,我被要求輸入密碼......這可能是什麼? (我唯一想要的就是訪問'pg_hba.conf'文件來改變它。) – allegutta

+0

@allegutta這表明你的'pg_hba.conf'設置爲'local'用戶的'md5'認證。如果你想禁用,你可以將其設置爲「信任」。要編輯文件,您需要使用'sudo -u postgres -i'成爲'postgres' * system *用戶。如果你的系統用戶帳號有密碼(解鎖你的屏幕等),它會提示你輸入密碼。您不要通過'psql'編輯'pg_hba.conf',而是直接使用操作系統工具。 –

+0

是的,謝謝你的幫助。我設法改變了我的'pg_hba.conf'文件! :) – allegutta