時間:2024-02-24 17:17作者:下載吧人氣:64
當我們對Postgresql的某個用戶授予默認權限時, pg_default_acl表存儲要被分配給新創建對象的初始權限。你可能通過查詢該表獲取默認權限,先了解下官方文檔的解釋:
表 50-17. pg_default_acl的列:
名稱 | 類型 | 引用 | 描述 |
---|---|---|---|
oid | oid | 行標識符(隱藏屬性,必須被顯式選擇才會顯示) | |
defaclrole | oid | pg_authid.oid | 與此項相關的角色的OID |
defaclnamespace | oid | pg_namespace.oid | 與此項相關的名字空間的OID,如果沒有則為0 |
defaclobjtype | char | 此項適合的對象類型: r = 關系(表、視圖), S = 序列, f = 函數, T = 類型 | |
defaclacl | aclitem[] | 此類對象在創建時應用有的訪問權限 |
一個pg_default_acl項展示了要分配給屬于一個指定用戶的對象的初始權限。當前有兩類項:defaclnamespace = 0的”全局”項和引用一個特殊模式的”每模式”項。如果一個全局項存在,則它重載該對象類型的普通hard-wired默認權限。一個每模式項如果存在,表示權限將被加入到全局或hard-wired默認權限中。
演示數據庫版本:PostgreSQL 9.6.8
這里我們測試給test用戶添加“abc”模式的默認權限,先查看下當前schema的所有者:
// 查看當前schema的所有者,相當于du元命令
SELECT n.nspname AS “Name”,
pg_catalog.pg_get_userbyid(n.nspowner) AS “Owner”
FROM pg_catalog.pg_namespace n
WHERE n.nspname !~ ‘^pg_’ AND n.nspname <> ‘information_schema’
ORDER BY 1;
網友評論