Oracle權限和角色管理概述

Oracle的權限有兩種:

system privileges:用戶所做的操作會對數據字典造成影響;

object privileges:用戶所做的操作會對數據造成影響;

 

System Privilege:

大概有200多個系統權限,常用的系統權限包括:

  • CREATE SESSION
  • RESTRICTED SESSION:當數據庫處於restricted狀態的時候,這些用戶可以進入;
  • ALTER DATABASE
  • ALTER SYSTEM
  • CREATE TABLESPACE
  • CREATE TABLE
  • GRANT ANY OBJECT PRIVILEGE
  • CREATE ANY TABLE
  • DROP ANY TABLE
  • INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
  • SELECT ANY TABLE

 

 

GRANTprivilege1,privilege2 TO username;

 

grantcreate table to scott with admin option;

connectscott/tiger;

grantcreate table to sj;

 

用戶scott只能在自己的schema中建立表

用戶sj也只能在自己的schema中建立表

如果將scott的該權限收穫,sj的權限將依舊存在;

 

--查看用戶所擁有的權限,並且看其是否可以繼續授權

select * fromdba_sys_privs where grantee='SJ';

 

授予any table權限的,任然不能操作SYS表空間中的表;

 

Object Privileges

可以將select,update,delete,insert,alter,execute等DML操作權限賦給用戶,可以針對表,也可以針對表中的某些列,例:

grantselect  on scott.emp to sj;

grant update (order_status) on scott.orders to sj;--在列這個級別分配會造出嚴重的系統負擔;

grant allon scott.regions to sj;

Object Privileges 權限可以級聯收回

revoke select  on scott.empfrom sj;-----------通過sj再賦予其他用戶的權限在此語句執行後都將收回;

 

創建和管理角色

--查看用戶所擁有的角色,並查看是否可以繼續授權

select * fromdba_role_privs where grantee='SJ';

 

A role isbundle of system and/or object privileges that can be granted and revoked as aunit, and having been granted  can betemporarily activated or deactivated with in a session;

CREATE ROLE rolename;

角色的名字不能和現有用戶的用戶名重複,也不能和現有的角色名重複;

 

createrole hr_junior;

grantcreate session to hr_junior;

grantselect on hr.regions to hr_junior

 

createrole hr_senior;

granthr_junior to hr_senior with admin option;

grantupdate on hr.regions to hr_senior;

 

createrole hr_manager;

granthr_senior to hr_manager with admin option;

grant allon hr.regions to hr_manager;

 

和system privileges權限的收回方式一樣,role的收回也是不能級聯進行的;

 

預先定義好的角色:

  • CONNECT:爲了向後兼容,現在改爲CREATE SESSION,可以創建表
  • RESOURCE:爲了向後兼容,可以創建表或存儲過程;並且有UNLIMITED TABLESACPE權限;
  • DBA:幾乎具備所有的權限,但是不能啓動和關閉數據庫;
  • SELECT_CATALOG_ROLE:數據庫初級管理員最好有這個,它能擁有許多object privileges的權限,但是沒有system privileges的權限,也沒有用戶數據的權限,不能看到用戶數據;
  • SCHEDULER_ADMIN:具有管理批量計劃腳本的權限

 

there isalso a predefined role PUBLIC, which is always granted to every database useraccount;

例:grant select on hr.regions topublic;------通過執行這個語句,系統中的所有用戶都可以獲得對這個表的select權限;

 

--將一個用戶的默認角色失效

ALTER UESR sj DEFAULT ROLE NONE;--當sj用戶登錄的時候,它沒有任何可用的角色,甚至不能登錄;

grant connect to sj --將登錄角色賦給sj

alter user sj default role connect;---將登錄角色作爲sj的默認角色

 

SET ROLE rolename;

CTRATEROLE rolename IDENTIFIED USING procedure_name;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章