您好,登錄后才能下訂單哦!
使用角色的概念管理數據庫訪問權限。 角色可以是數據庫用戶和一組數據庫用戶,可擁有數據庫對象。 - 1.數據庫角色 獨立于操作系統用戶。 創建角色: create role name; 刪除角色: drop role name; 確定現有角色: select * from pg_roles; 或者\du 列出現有角色。 新安裝的數據庫默認有一個預定義角色:postgres. 給定客戶端連接可以連接的數據庫角色集,由客戶端身份驗證設置決定. - 2. 角色屬性 這些屬性定義其權限并與客戶端身份驗證系統交互。 登錄權限(login privilege): 具有login屬性的角色才能用作數據庫連接的初始角色名稱。create role name login; 超級用戶狀態(superuser status): 數據庫超級用戶繞過所有權限檢查,但登錄權限除外. create role name superuser; database creation 授予角色創建數據庫的權限: create role name createdb; role creation 授予角色創建更多角色的權限: create role name createrole; initiating replication 授予角色啟動流復制的權限: create role name REPLICATION LOGIN; password 數據庫密碼與操作系統密碼分開 使用時創建角色時指定密碼。CREATE ROLE name PASSWORD 'string'; 優秀做法: 創建具有CREATEDB和CREATEROLE權限但不是超級用戶的角色,然后將此角色用于數據庫和角色的所有日常管理. - 3 角色成員: 可以將權限授予整個組或從組中撤銷。 先創建角色: create role name; 組角色存在后,可使用grant和revoke命令添加和刪除成員。 grant grouprole to role1...; revoke grouprole from role1...; 數據庫不允許您設置循環成員資格循環。此外,不允許授予角色成員資格 PUBLIC。 例如: CREATE ROLE joe LOGIN INHERIT; CREATE ROLE admin NOINHERIT; CREATE ROLE wheel NOINHERIT; GRANT admin TO joe; GRANT wheel TO admin; 組角色的成員可以通過兩種方式使用角色的權限. 設置臨時組角色: set role name; 重置角色: reset role; 刪除組角色: drop role name; 數據庫會話可以訪問組角色的權限,創建的任何數據庫對象都被組角色擁有。 成員角色會繼承組角色的權限。 用戶在角色執行時不會自動繼承權限。PostgreSQL默認為所有角色提供 INHERIT屬性.
- 4 刪除角色: 角色可以擁有數據庫對象并且可以擁有訪問其他對象的權限。 刪除角色前,先刪除該角色擁有的任何對象或將其重新分配給其他所有者; 并且必須撤消授予該角色的任何權限。 ALTER TABLE bobs_table OWNER TO alice; 或者: REASSIGN OWNED命令可用于將要刪除的角色所擁有的所有對象的所有權重新分配給單個其他角色.必須在包含該角色所擁有的對象的每個數據庫中運行它. DROP OWNED不會刪除整個數據庫或表空間. 刪除已用于擁有對象的角色的最常用方法是: REASSIGN OWNED BY doomed_role TO successor_role; DROP OWNED BY doomed_role; -- 在集群 DROP ROLE doomed_role; - 5. 默認角色: 可訪問常用的功能和信息。 角色 允許訪問 pg_read_all_settings 讀取所有配置變量,僅對超級用戶可見的變量。 pg_read_all_stats 閱讀所有pg_stat_ *視圖并使用各種與統計相關的擴展,僅對超級用戶可見的擴展。 pg_stat_scan_tables 執行可能ACCESS SHARE會對表進行鎖定的監視函數。 pg_signal_backend 將信號發送到其他后端(例如:取消查詢,終止)。 pg_monitor 讀取/執行各種監視視圖和功能。這個角色的成員pg_read_all_settings,pg_read_all_stats和pg_stat_scan_tables。 管理員監控數據庫服務器的目的配置: pg_monitor,pg_read_all_settings,pg_read_all_stats和pg_stat_scan_tables角色,它們授予一組公共權限,允許角色讀取通常僅限于超級用戶的各種有用的配置設置,統計信息和其他系統信息。 管理員可以使用GRANT命令向用戶授予對這些角色的訪問權限: GRANT pg_signal_backend TO admin_user;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。