Postgresql

高級 PostgreSQL 使用者管理

  • April 2, 2012

對於我們研究所的使用者,我們希望提供一種快速簡單的方式來使用 PostgreSQL 數據庫。目前,我們已經能夠通過 LDAP (PAM) 對所有使用者進行身份驗證。這工作得很好。我們必須做create user一次,使用者可以使用 LDAP 支持的密碼登錄到數據庫。

但是,這種簡單的設計有幾個缺點:

使用者可能想要幾個帶有一次性密碼的一次性角色,這樣他們就不需要儲存他們的 LDAP 密碼。

使用者應該能夠自由地創建自己的數據庫。(並且他們應該能夠將其數據庫的權限授予其他使用者。)

因此,簡而言之,username應該允許每個具有 name 的 LDAP 支持的使用者創建其他角色,只要它們以username_;為前綴即可。數據庫也是如此。(也歡迎其他建議。)LDAP 支持的使用者將成為整個username_數據庫空間的超級使用者。

我已經看到安裝為 MySQL 做類似的事情(萬用字元授權),但我想知道這是否也適用於 PostgreSQL。

看來您應該能夠使用 Postgres 函式來執行此操作,該函式由既可以創建數據庫又可以創建使用者的使用者創建和擁有;一個函式用於創建數據庫,另一個函式用於創建使用者。關鍵是SECURITY DEFINER在函式定義中指定子句(詳見文件)。讓第一個函式創建數據庫並將所有權等設置為current_user. 第二個功能,用於創建使用者,可以根據 驗證要創建的使用者/角色,current_user以確保它符合您的命名標準。

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