Permissions

PostgreSQL 使用者權限

  • November 29, 2009

我正在嘗試從 MySQL 過渡到 PostgreSQL,但發現使用者帳戶/權限系統完全不同。

使用 mysql,所有帳戶都由 mysql 內部處理。使用 postgres 似乎我需要在系統內以及在 postgres 內創建一個帳戶。

是否有關於系統使用者帳戶如何與 postgres 使用者帳戶相關的指南?postgres 手冊似乎沒有詳細說明這一點。

如果要使用本地身份驗證,則只需創建系統使用者。

對於網路連接,您可以像在 MySQL 中一樣使用 CREATE USER 和 GRANT。

主要區別在於,與認證和授權部分都在 mysql 數據庫中的表內的 MySQL 不同,Postgres 的部分認證規則在外部文件 pg_hba.conf 中。

要讓使用者 foo 從 10.1.1.0/24 連接到數據庫 bar,您需要在該文件中添加如下一行:

host bar foo 10.1.1.0/24 md5

編輯完pg_hba.conf,記得執行

pg_ctl reload

重新載入配置。

當使用者嘗試連接時,他們將需要提供密碼(您在創建使用者時提供)。

還要記住,在 PostgreSQL 中,一切都是角色。您定義為“WITH LOGIN”的角色是使用者,而沒有此標誌的角色更像是一個組。為了靈活性,我傾向於使用密碼和 WITH LOGIN 創建使用者。然後我創建沒有密碼的角色並將這個角色授予登錄使用者。我的授權是針對類似組的角色,而不是針對個人使用者。

在 pg_hba.conf 中,使用 +role 來匹配分配了角色的任何人(而不是上面範例中的 foo)

引用自:https://serverfault.com/questions/79583