程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle權限管理

oracle權限管理

編輯:Oracle數據庫基礎
一、系統的默認用戶
Java代碼
sys;//系統管理員,擁有最高權限      
system;//本地管理員,次高權限      
scott;//普通用戶,密碼默認為tiger,默認未解鎖   

二、登陸
Java代碼
sqlplus conn / as sysdba;//登陸sys帳戶      
sqlplus sys as sysdba;//同上      
sqlplus scott/tiger;//登陸普通用戶scott  

三、管理用戶
Java代碼
create user zhangsan;//在管理員帳戶下,創建用戶zhangsan      
alert user scott identifIEd by tiger;//修改密碼  

四,授予權限
1、默認的普通用戶scott默認未解鎖,不能進行那個使用,新建的用戶也沒有任何權限,必須授予權限
Java代碼
/*管理員授權*/     
grant create session to zhangsan;//授予zhangsan用戶創建session的權限,即登陸權限      
grant unlimited session to zhangsan;//授予zhangsan用戶使用表空間的權限      
grant create table to zhangsan;//授予創建表的權限      
grant drop table to zhangsan;//授予刪除表的權限      
grant insert table to zhangsan;//插入表的權限      
grant update table to zhangsan;//修改表的權限      
grant all to public;//這條比較重要,授予所有權限(all)給所有用戶(public)    

2、oralce對權限管理比較嚴謹,普通用戶之間也是默認不能互相訪問的,需要互相授權
Java代碼
/*oralce對權限管理比較嚴謹,普通用戶之間也是默認不能互相訪問的*/     
grant select on tablename to zhangsan;//授予zhangsan用戶查看指定表的權限      
grant drop on tablename to zhangsan;//授予刪除表的權限      
grant insert on tablename to zhangsan;//授予插入的權限      
grant update on tablename to zhangsan;//授予修改表的權限      
grant insert(id) on tablename to zhangsan;      
grant update(id) on tablename to zhangsan;//授予對指定表特定字段的插入和修改權限,注意,只能是insert和update      
grant alert all table to zhangsan;//授予zhangsan用戶alert任意表的權限    

五、撤銷權限
Java代碼
基本語法同grant,關鍵字為revoke  

六、查看權限
Java代碼
select * from user_sys_privs;//查看當前用戶所有權限      
select * from user_tab_privs;//查看所用用戶對表的權限    

七、操作表的用戶的表
Java代碼
/*需要在表名前加上用戶名,如下*/     
select * from zhangsan.tablename    

八、權限傳遞
即用戶A將權限授予B,B可以將操作的權限再授予C,命令如下:
Java代碼
grant alert table on tablename to zhangsan with admin option;//關鍵字 with admin option      
grant alert table on tablename to zhangsan with grant option;//關鍵字 with grant option效果和admin類似    

九、角色
角色即權限的集合,可以把一個角色授予給用戶
Java代碼
create role myrole;//創建角色      
grant create session to myrole;//將創建session的權限授予myrole      
grant myrole to zhangsan;//授予zhangsan用戶myrole的角色       
drop role myrole;刪除角色      
/*但是有些權限是不能授予給角色的,比如unlimited tablespace和any關鍵字*/   

對象權限:

1、對象權限賦予語法:
    GRANT object_privilege ON object_name TO username [ WITH GRANT OPTION ];
    注:使用WITH GRANT OPTION語句後,使用戶可以將相同權限賦給其他用戶,與系統權限相同。

2、對象權限撤銷語法:
    REVOKE object_privilege ON object_name FROM username;
    注:當刪除A用戶的權限時,通過A賦予B的權限自動消失,與系統權限相反。

3、查看具體的對象權限:
    select * from dba_tab_privs where grantee= 'WANGXIAOQI' ;   
    select * fromTABLE_PRIVILEGESwhere GRANTEE='WANGXIAOQI';  
    注1:兩者均可以查看對象權限,只是展現形式不同。
    注2:表名為TABLE_PRIV,但 不光只有table,而是所有object的信息,包括function、procedure、package等。

4、object privilege 種類比較少,而且根據對象類型的不同而不同。

    在賦值時可以使用all代替該類型對象的所有權限類型,如:
    grant select , update , delete , insert on table_name to user_name;

    grant all on table_name to user_name;


    注:對於TABLE,all包括:ALTER、DELETE、INDEX、INSERT、SELECT、UPDATE、REFERENCES、ON COMMIT REFRESH、QUERY REWRITE、DEBUG、FlashBACK



角色管理:

1、通過role來簡化賦權操作,每個role含有若干項系統權限。role包括系統預定義和自定義兩種。
    select * from dba_roles; --查詢當前所有ROLE列表,包括自定義
    select * from dba_role_privs; --查詢某用戶的ROLE權限
    select * from ROLE_SYS_PRIVS; --查詢當前用戶的ROLE,及其所包含的系統權限

2、系統預定義角色:
    CONNECT:
        CREATE VIEW
        CREATE TABLE
        ALTER SESSION
        CREATE CLUSTER
        CREATE SESSION
        CREATE SYNONYM
        CREATE SEQUENCE
        CREATE DATABASE LINK
    RESOURCE:
        CREATE TYPE
        CREATE TABLE
        CREATE CLUSTER
        CREATE TRIGGER
        CREATE OperaTOR
        CREATE SEQUENCE
        CREATE INDEXTYPE
        CREATE PROCEDURE
    另外包括比較重要的ROLE如:DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE等。


3、自定義角色:
    
    創建ROLE:
    CREATE ROLE role_name
    [ NOT IDENTIFIED | IDENTIFIED BY passWord]
    注:IDENTIFIED 表示在修改該ROLE時是否需要提供密碼 <修改,不包括賦權和取消權限>

    在創建 role 之後,使用 grant 和 revoke 手動設置 role 對應的權限
    再使用 grant 和 revoke 將 role 賦給 user
    注:可以將 role 賦給 role

4、啟用和禁用ROLE:
    SET ROLE [role [identified by password] |,role [identifIEd by passWord]...]
    | ALL [EXCEPT role[,role]...]
    | NONE ];
    注:ALL 表示啟用改用戶的所有角色,NONE表示禁用所有角色。

    例:
    禁用所有角色:setrolenone;
    啟用所有角色:setroleall; --role不能有密碼
    啟用某個角色:setrole role_test identifIEdby test; --有密碼的話
    禁用某個角色:setroleallexcept role_test;
    注:setrole命令是覆蓋性質的,即不能先啟用一個,再啟用另一個,必須一條命令中全部啟動;

5、修改用戶時設置角色:
    ALTER USER username
    [default role [role_name[,role_name,...]]
    | all [except role_name[,role_name,...]]
    | none ];
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved