一、系統的預設用戶
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關鍵字*/
本文來自CSDN博客,轉載請標示出處:http: //blog.csdn.net/JustForFly/archive/2009/10/16/4681707.aspx
物件權限:
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 ];
本文出自CSDN博客,轉載請標示出處: http://blog.csdn.net/cosio/archive/2009/08/18/4459756.aspx