Permissions
PostgreSQL 使用者權限
我正在嘗試從 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)