用戶管理及受權管理

 

一:建立用戶語法

 

目的

使用CREATE USER語句來建立和配置數據庫。用戶,它是一個賬戶,您能夠經過該賬戶登陸數據庫,並創建Oracle數據庫容許用戶訪問的方法。sql

能夠在Oracle自動存儲管理(Oracle ASM)羣集中發出此語句,以便將用戶和密碼組合添加到當前節點的Oracle ASM實例的本地密碼文件中。每一個節點的Oracle ASM實例均可以使用此語句更新本身的密碼文件。密碼文件自己必須是由ORAPWD效用。數據庫

您可使用戶經過代理應用程序或應用程序服務器鏈接到數據庫。 vim

先決條件

你必定有CREATE USER系統特權建立一個具備CREATE USER語句時,用戶的權限域爲空。要登陸到Oracle數據庫,用戶必須具備CREATE SESSION系統特權所以,在建立用戶以後,您應該至少將CREATE SESSION系統特權參考格蘭特想了解更多信息。安全

只有通過身份驗證的用戶AS SYSASM能夠發出此命令修改Oracle ASM實例密碼文件。bash

 

句法

CREATE USER user
   IDENTIFIED { BY password
              | EXTERNALLY [ AS 'certificate_DN'  |  AS 'kerberos_principal_name' ]
              | GLOBALLY [ AS '[ directory_DN ]' ]
              }
   [ DEFAULT TABLESPACE tablespace
   | TEMPORARY TABLESPACE
        { tablespace | tablespace_group_name }
   | { QUOTA { size_clause | UNLIMITED } ON tablespace }...
   | PROFILE profile
   | PASSWORD EXPIRE
   | ACCOUNT { LOCK | UNLOCK }
     [ DEFAULT TABLESPACE tablespace
     | TEMPORARY TABLESPACE
          { tablespace | tablespace_group_name }
     | { QUOTA { size_clause | UNLIMITED } ON tablespace }...
     | PROFILE profile
     | PASSWORD EXPIRE
     | ACCOUNT { LOCK | UNLOCK }
     | ENABLE EDITIONS
     ]...
  ] ;

 

IDENTIFIED:子句容許您指示Oracle數據庫如何對用戶進行身份驗證。服務器

BY password:子句容許您建立本地用戶並指示用戶必須指定password登陸到數據庫。密碼區分大小寫。任何後續CONNECT中使用的相同狀況(上、下或混合),用於將此用戶鏈接到數據庫的字符串必須指定密碼。CREATE USER聲明或後續ALTER USER聲明。密碼能夠包含數據庫字符集中的任何單字節、多字節或特殊字符,或這些字符的任何組合。session

EXTERNALLY:若要建立一個外部用戶。這樣的用戶必須經過外部服務(如操做系統或第三方服務)進行身份驗證。在這種狀況下,Oracle數據庫依賴於操做系統或第三方服務的身份驗證,以確保特定的外部用戶可以訪問特定的數據庫用戶。架構

certificate_DN:此子句僅適用於經過SSL身份驗證的外部用戶。大證書DN用戶錢包中的PKI證書中的可分辨名稱。最大長度證書DN是1024個字符oracle

Kerberos_main_name :此子句僅用於Kerberos認證的外部用戶。最大長度Kerberos_main_name是1024個字符。app

警告:Oracle強烈建議您不要使用IDENTIFIED EXTERNALLY具備固有的弱登陸安全性的操做系統。

對建立外部用戶的限制如下限制適用於建立外部用戶:用戶SYS不能是外部用戶。Oracle ASM不支持建立外部用戶。

GLOBALLY 子句容許您建立全局用戶。這樣的用戶必須獲得企業目錄服務(Oracle Internet Directory)的受權。

directory_DN字符串能夠採起兩種形式之一:

  • 標識此用戶的企業目錄服務中的X.509名稱。它應該是形式的CN=username,other_attributes,在哪裏other_attributes是目錄中用戶的其餘可分辨名稱(DN)。此表單建立私有全局模式.;

  • 一個空字符串(‘),指示企業目錄服務將經過身份驗證的全局用戶映射到此數據庫模式,並具備適當的角色。此表單與指定GLOBALLY關鍵字並建立共享全局模式.

最大長度 directory_DN 是1024個字符。 您能夠控制應用程序服務器以指定用戶的身份鏈接並使用 ALTER   USER 聲明

 

 對建立全局用戶的限制:Oracle ASM不支持建立全局用戶。

 DEFAULT TABLESPACE:爲在用戶架構中建立的對象指定默認表空間。若是省略此子句,則用戶的對象將存儲在數據庫默認表空間中。若是沒有爲數據庫指定默認表空間,則用戶的對象將存儲在SYSTEM表空間。

 對默認表空間的限制:不能指定本地管理的臨時表空間(包括撤消表空間)或字典管理的臨時表空間做爲用戶的默認表空間。

 TEMPORARY TABLESPACE :爲用戶的臨時段指定表空間或表空間組。若是省略此子句,則用戶的臨時段存儲在數據庫默認臨時表空間中,若是沒有指定,則存儲在SYSTEM表空間。

  • 指定tablespace指示用戶的臨時表空間。

  • 指定tablespace_group_name指定的表空間組中的任何表空間中,用戶能夠保存臨時段。tablespace_group_name.

 

對臨時表空間的限制該條款受如下限制:

  • 表空間必須是臨時表空間,而且必須具備標準塊大小。

  • 表空間不能是撤消表空間或具備自動段空間管理的表空間。

 QUOTA :配額條款

使用QUOTA子句指定用戶能夠在表空間中分配的最大空間。

CREATE USER語句能夠有多個QUOTA用於多個表空間的子句。

UNLIMITED容許用戶不受綁定地在表空間中分配空間。

您能夠指定的最大空間爲2TB(TB)。若是須要更多的空間,請指定UNLIMITED.

配額限制:不能爲臨時表空間指定此子句。

 

PROFILE:指定要分配給用戶的配置文件。配置文件限制了用戶可使用的數據庫資源的數量。若是省略此子句,則Oracle數據庫將指定DEFAULT配置文件給用戶。

 

注:Oracle建議您使用數據庫資源管理器而不是SQL配置文件來創建數據庫資源限制。數據庫資源管理器提供了一種更靈活的管理和跟蹤資源使用的方法。有關數據庫資源管理器的詳細信息,請參閱Oracle數據庫管理員指南。

 

 PASSWORD EXPIRE :指定PASSWORD EXPIRE若是您但願用戶的密碼過時。此設置強制用戶或DBA在用戶登陸到數據庫以前更改密碼。

 ACCOUNT:指定ACCOUNT LOCK若要鎖定用戶賬戶並禁用訪問權限,請執行如下操做。指定ACCOUNT UNLOCK若要解除用戶賬戶的鎖定並啓用對賬戶的訪問,請執行如下操做。

ENABLE :啓用版本;這個條款是不可逆的。指定ENABLE EDITIONS容許用戶使用版本在此架構中建立多個版本的可編輯對象。不能編輯架構中未啓用版本的可編輯對象。

 

 

 

 

 

 

 

 

 

 

二:用戶管理實驗操做

 

1:建立一個數據庫驗證用戶,同時爲它指定口令、默認表空間、臨時表空間、空間配額,並要求他登陸後更改口令。

 

--0)查表空間
select tablespace_name from dba_tablespaces;
--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)建立用戶
SQL> CREATE USER w01 IDENTIFIED BY w01 DEFAULT TABLESPACE users TEMPORARY TABLESPACE tempts QUOTA 10M ON users PASSWORD EXPIRE;
用戶已建立
--3)爲用戶授基本權限
SQL> GRANT CONNECT,RESOURCE TO w01;
受權成功。
--4)使用新用戶登陸數據庫
SQL> CONN w01/w01
ERROR:
ORA-28001: the password has expired
更改u01 的口令
新口令:
從新鍵入新口令:
口令已更改
已鏈接。

 

二、建立數據庫驗證用戶,同時爲它指定口令、缺省表空間、臨時表空間、 空間配額,並設置該用戶爲鎖定狀態。

---0)查表空間
select tablespace_name from dba_tablespaces;
--建立表空間
Create tablespace indx datafile '/u01/app/oracle/oradata/orcl/indx.dbf' size 2M;
--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)建立用戶
SQL>CREATE USER w02 IDENTIFIED BY w02 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON indx QUOTA 1m ON users ACCOUNT LOCK;
用戶已建立
--3)爲用戶授基本權限
SQL> grant connect,resource to w02;
受權成功。
--4)使用新用戶登陸數據庫
SQL> CONN w02/w02
ERROR:
ORA-28000: the account is locked
警告: 您再也不鏈接到ORACLE。
--5)以管理員身份從新登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--6)爲帳戶解鎖
SQL> ALTER USER w02 ACCOUNT UNLOCK;
用戶已更改。
--7)使用新帳戶登陸數據庫
SQL> CONN w02/w02
已鏈接。

 

 

三、建立一個操做系統驗證的用戶ops$w03。(外部用戶

--1.使用root建立用戶
[root@oracle ~]# useradd -G oinstall w03
[root@oracle ~]# passwd w03
--2.修改環境變量
[root@oracle ~]# su – w03
[w03@ocp ~]$ whoami
[w03@ocp ~]$ vim .bash_profile
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
[w03@ocp ~]$source .bash_profile
--3.在ORACLE中建立
SQL> conn / as sysdba
SQL>create user ops$w03 identified externally;
----4.爲用戶受權鏈接
SQL>grant connect to ops$w03;
--5.嘗試鏈接
[w03@ocp ~]$ sqlplus /
SQL> show user
USER is "OPS$W03"

 

四、用戶w02修改本身的口令

 

--1)以用戶u2 登陸
SQL>connect w02/w02
已鏈接。
--2)修改用戶口令
ALTER USER w02 IDENTIFIED BY w002;
用戶已更改。

 

 

五、把用戶w02 在USERS 表空間上的配額改成0

 

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)修改配額
SQL>ALTER USER w02
QUOTA 0 ON USERS;
用戶已更改。
CREATE USER w011 IDENTIFIED BY w011 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
SELECT tablespace_name,blocks*100/max_blocks || '%' "ok" FROM dba_ts_quotas WHERE username='W011' AND max_blocks<>-1;
TABLESPACE_NAME ok
------------------------------ -----------------------------------------
USERS 0%
SQL> alter user w011 quota 1k on users;
SQL> grant connect to w011;
Grant succeeded.
SQL> grant create table to w011;
Grant succeeded.
SQL> conn w011/w011
SQL> create table ss(sdf int);
insert into ss values(1);
create table ss(sdf int)
*
ERROR at line 1:
ORA-01536: space quota exceeded for tablespace 'USERS'

 

六、對用戶進行修改,要求用戶w02 登陸後更改口令

 

SQL> CONN / AS SYSDBA
SQL> ALTER USER w02 PASSWORD EXPIRE;

 

七、鎖定用戶帳號

SQL>CONNECT / AS SYSDBA
ALTER USER w02 ACCOUNT LOCK;

 

八、解鎖用戶帳號

 

SQL>CONNECT / AS SYSDBA
ALTER USER w02 ACCOUNT UNLOCK;

 

九、刪除用戶

 

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)刪除用戶
SQL>DROP USER w01 CASCADE;
--當前正鏈接的用戶是不能刪除的,若是肯定要刪除該用戶, 那麼首先終止用戶會話,而後刪除該用戶
Select sid,serial# from v$session where username=’u1’;
Alter system kill session ‘8,25’;
DROP USER u1 CASCADE;

 

十、查詢全部用戶的默認表空間

 

---1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)查詢信息
SQL> SELECT username, default_tablespace FROM dba_users;
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SYS SYSTEM
SYSTEM SYSTEM
SCOTT SYSTEM
U02 USERS
HR EXAMPLE
RMAN TOOLS
……
已選擇35 行。

 

十一、顯示用戶w02的默認表空間和臨時表空間信息

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)查詢信息
SQL> SELECT default_tablespace,temporary_tablespace
FROM dba_users WHERE username='W02';
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------ ------------------------------
USERS TEMP

 

十二、查看用戶scott 的表空間配額

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)查詢信息
SQL>SELECT tablespace_name,blocks*100/max_blocks || '%' FROM dba_ts_quotas WHERE username='SCOTT' AND max_blocks<>-1;
TABLESPACE_NAME 已用空間百分比
----------------------------- -------------------
USERS 6.25%


三:系統權限和對象權限

 

一、授予用戶aaron1 具備建立表和視圖的權限。

 

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
-2)建立用戶
SQL> CREATE USER aaron1 IDENTIFIED BY aaron1 DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
用戶已建立
--3)授予權限
SOL>GRANT create session,CREATE TABLE,CREATE VIEW to aaron1;
GRANT UNLIMITED TABLESPACE TO aaron1 ;
受權成功。
--4)使用權限建立表
SOL>connect aaron1/aaron1
已鏈接。
SOL>create table t1(cola int, colb char(3));
表已建立。
SOL>insert into t1 values(1,'a');
已建立1 行。
SOL>COMMIT;
提交完成。
create view a as select * from t1;

 

 

二、授予用戶W01D鏈接數據庫和建立表的權限

 

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)建立用戶
SQL> CREATE USER w01d IDENTIFIED BY w01d DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)授予權限
SOL>GRANT create session,CREATE TABLE to w01d;
--4)使用權限建立表
SOL>connect w01d/w01d
已鏈接。
SOL>create table t1(cola int, colb char(3));
表已建立。

 

三、其它用戶授予SYSDBA權限

 

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)建立用戶
SQL> CREATE USER dd IDENTIFIED BY dd DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)授予權限
SOL>GRANT SYSDBA to dd;
受權成功。
SOL>CONN dd/dd AS SYSDBA;
已鏈接。
Show user
SOL>SHUTDOWN immediate

 

四、回收用戶aaron1 的建立表的權限。

 

--1)以管理員身份登陸
SOL>CONNECT / AS SYSDBA
已鏈接。
--2)回收權限
SOL>REVOKE CREATE TABLE FROM aaron1;
撤銷成功。

 

五、授予用戶bb1有建立存儲過程的權限,要求帶WITH ADMIN OPTION參數。

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)建立用戶
SQL> CREATE USER bb1 IDENTIFIED BY bb1 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
SQL> CREATE USER bb2 IDENTIFIED BY bb2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)管理員授予系統權限,並容許傳遞
SOL>GRANT create session,CREATE PROCEDURE to bb1 WITH ADMIN OPTION;
受權成功。
--4)以aa1用戶登陸,授予用戶aa2建立存儲過程的權限
SOL>CONNECT bb1/bb1
已鏈接。
SOL>GRANT create session,CREATE PROCEDURE to bb2;
受權成功。
--5)建立存儲過程
SOL>connect bb2/bb2
已鏈接。
SOL> CREATE OR REPLACE PROCEDURE pp
AS
BEGIN
DBMS_OUTPUT.PUT_LINE('ok ');
END;
/
過程已建立

 

六、回收用戶aa1的建立存儲過程的權限。

 

--1)以管理員身份登陸
SOL>CONNECT / AS SYSDBA
已鏈接。
--2)回收權限
SOL>REVOKE CREATE PROCEDURE FROM bb1;
撤銷成功。
--3)建立存儲過程
SOL>connect bb2/bb2
已鏈接。
SOL> CREATE OR REPLACE PROCEDURE pp1
AS
BEGIN
DBMS_OUTPUT.PUT_LINE('ok');
END;
/
過程已建立
--當DBA 收回了bb1的CREATE PROCEDURE 系統權限後,用戶bb2仍然具備CREATE PROCEDURE 系統權限。由於系統權限不會被級聯收回.

 

 

四:對象權限管理

 

 

一、ss用戶把wq表的查詢權限授予cc用戶

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)建立用戶
SQL> CREATE USER ss IDENTIFIED BY ss DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
SQL> CREATE USER cc IDENTIFIED BY cc DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)管理員授予系統權限,並容許傳遞
SOL>GRANT create session,CREATE table to ss;
Grant create session to cc;
--4)以ss用戶登陸,建立表插入記錄
SOL>CONNECT ss/ss
Create table wq (ee int);
Insert into wq values(12);
--5)ss授予wq對象權限
SOL>GRANT SELECT ON wq to cc;
受權成功。
--6)cc查詢wq表
SOL>connect cc/cc
已鏈接。
SOL>SELECT * FROM ss.wq;

 

二、ss用戶把wq表的ee列的插入和更新權限授予cc用戶。

 

--1)以ss用戶登陸
SOL>CONNECT ss/ss
已鏈接。
--2)ss用戶授予cc列權限
SOL>GRANT INSERT(ee),UPDATE(ee) ON wq to cc;
受權成功。
--3)cc插入數據到ss的wq表
SOL>connect cc/cc
已鏈接。
SOL>INSERT INTO ss.wq(ee) VALUES(343);
已建立1 行。

 

三、爲了使得用戶cc能夠在ss的wq表創建索引,就必須授予INDEX 對象權限。

--1)以SYSTEM 用戶登陸
SOL>CONNECT ss/ss
已鏈接。
--2)受權
SOL>GRANT INDEX ON wq to cc;
受權成功。
--3)建立索引
SQL>connect cc/cc
已鏈接。
SQL>CREATE INDEX idx1 ON ss.wq(ee);
索引已建立。
--4)查詢索引
SQL> select index_name from user_indexes;

 

四、cc用戶要基於表ss.wq創建從表,則必需要被授予REFERENCES 對象權限。


--1)以SYSTEM 用戶登陸
SQL>connect ss/ss
已鏈接。
--2)建約束
SQL> alter table wq add constraint pk_wq primary key (ee);
SQL> select constraint_name from user_constraints;
刪除約束
alter table tempi drop constraint SYS_C002845;
--2)受權
SQL>GRANT REFERENCES ON wq TO cc;
受權成功。
--3)建立外鍵
conn / as sysdba
SYS@orcl> grant create table to cc;
SQL>connect cc/cc
已鏈接。
SQL> CREATE TABLE tempi(cola int constraint fk_wq_tempi REFERENCES ss.wq(ee));
表已建立。
SQL> select constraint_name from user_constraints;

 

 

五、回收用戶cc的wq表的查詢權限

--1)以ss用戶登陸
SOL>CONNECT ss/ss
已鏈接。
--2)回收權限
SOL>REVOKE SELECT ON wq FROM cc;
撤銷成功。
--3)回收權限後,查詢出錯
SQL>connect cc/cc
已鏈接。
SQL>SELECT * FROM ss.wq;

 

六、回收用戶cc在ss.wq表上建立索引的權限

 

--1)以SYSTEM 用戶登陸
SOL>CONNECT ss/ss
已鏈接。
--2)受權
SOL>revoke INDEX ON wq from cc;
受權成功。
--3)建立索引
SQL>connect cc/cc
已鏈接。
SQL>CREATE INDEX idx11 ON ss.wq(ee);

 

七、使用WITH GRANT OPTION 參數,進行傳遞受權。

 

--1)以管理員身份登陸
SQL>CONNECT / AS SYSDBA
已鏈接。
--2)建立用戶
SQL> CREATE USER x1 IDENTIFIED BY x1_x1 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
SQL> CREATE USER x2 IDENTIFIED BY x2_x2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users; SQL> CREATE USER x3 IDENTIFIED BY x3_x3 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)管理員授予系統權限,並容許傳遞
SOL>GRANT create session,CREATE table to x1;
SOL>Grant create session to x2;
SOL>Grant create session to x3;
--4)以x1用戶登陸
SOL>CONNECT x1/x1_x1
已鏈接。
--5)創建表
SOL>create table ww(w1 int);
Insert into ww values(123);
--6)授予x2對象權限
SOL>GRANT select ON ww to x2 WITH GRANT OPTION;
--7)以x2用戶登陸
SOL>CONNECT x2/x2_x2
已鏈接。
--8)授予x3對象權限
SOL>GRANT select ON x1.ww to x3;
受權成功。
--9)以x3用戶登陸
SOL>CONNECT x3/x3_x3
Select * from x1.ww;

 

八、驗證對象權限的級聯回收。

 

--1)以x1用戶登陸
SOL>CONNECT x1/x1_x1
--2)回收權限
SOL>REVOKE select ON ww FROM x2;
--3)以x2用戶登陸
SOL>CONNECT x2/x2_x2
Select * from x1.ww;
--4)以x3用戶登陸
SOL>CONNECT x3/x3_x3
Select * from x1.ww;

 

九、當把ORACLE resource 角色授予一個user 的時候,不但會授予ORACLE resource 角色,自己的權限,並且還有unlimited tablespace 權限。

conn / as sysdba
SQL> create user desk identified by desk;
SQL> grant create session to desk;
SQL> conn desk
SQL> select PRIVILEGE from user_sys_privs;
SQL> conn / as sysdba
DESK@orcl> conn / as sysdba
SYS@orcl> SELECT PRIVILEGE FROM ROLE_SYS_PRIVS WHERE ROLE='RESOURCE';
SQL> grant resource to desk;
SQL> conn desk
SQL> select PRIVILEGE from user_sys_privs;
SELECT username, granted_role FROM user_role_privs WHERE username='DESK';
SQL> show user
USER is "SYS"
SQL> create role testrole identified using testrole;
SQL> revoke resource from desk;
SQL> grant resource to testrole;
SQL> grant testrole to desk;
SQL> conn desk
SQL> select privilege from user_sys_privs;

 

十、建立不須要驗證的角色oe_clerk。

 

--1)以管理員身份登陸
SOL>CONNECT / AS SYSDBA
已鏈接。
--2)建立角色
SOL>CREATE ROLE oe_clerk not identified;

十一、建立數據庫驗證的角色hr_clerk。

--1)以管理員身份登陸
SOL>CONNECT / AS SYSDBA
已鏈接。
--2)建立角色
SOL>CREATE ROLE hr_clerk IDENTIFIED BY bonus;
角色已建立
驗證角色生效

 

五:角色管理及角色賦權限

create user wl identified by wl DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
grant create session to wl;
create role ro_wl identified by ro_wl;
grant ro_wl to wl;
create role ro1_wl identified by ro1_wl;
grant ro1_wl to wl;
SQL> conn wl/wl
select PRIVILEGE from user_sys_privs;
create table ww(w1 int);
create view aa as select * from ww;
SQL> conn / as sysdba
grant create table to ro_wl;
Grant create view to ro1_wl;
SQL> conn wl/wl
SELECT username, granted_role FROM user_role_privs WHERE username='WL';
SQL> create table ww(w1 int);
不能夠建視圖
SQL> create view aa as select * from ww;
不能夠建視圖
SQL> SET ROLE ro_wl IDENTIFIED BY ro_wl;
SQL> create table ww1(w1 int);
能夠建表
create view a1a as select * from ww1;
不能建視圖
SQL> SET ROLE ro1_wl IDENTIFIED BY ro1_wl;
create view a1a as select * from ww1;
能夠建視圖
SQL> create table ww2(w1 int);
不能夠建表
--顯示當前會話生效的角色
SOL>SELECT * FROM session_roles;
SOL>SET ROLE NONE;
create view a2a as select * from ww1;
不能夠建視圖
create table ww3(w1 int);
不能夠建表

 

二、回收角色

 

SOL>CONNECT / AS SYSDBA
SOL>REVOKE ro_wl FROM wl;

 

三、刪除角色

SOL>CONNECT / AS SYSDBA
SOL>DROP ROLE ro_wl;

四、給角色授系統權限

--1)以管理員身份登陸
SOL>CONNECT / AS SYSDBA
已鏈接。
-2)角色受權
SOL>GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW TO oe_clerk WITH ADMIN OPTION;
受權成功。

 

五、給角色a3授予wl.aa 的DELETE 權限

SQL> CONNECT / AS SYSDBA
SQL> CREATE USER wl IDENTIFIED BY wl_3 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
CREATE USER wll IDENTIFIED BY wll_3 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
CREATE ROLE a3;
GRANT CREATE SESSION TO a3;
CREATE ROLE a4;
GRANT CREATE SESSION,create table TO a4;
Grant a4 to wl;
SQL> conn wl/wl_3
SQL> create table aa(ad int);
SQL> insert into aa values(34);
Conn / as sysdba
Grant delete on wl.aa to a3;
Grant a3 to wll;
Conn wll/wll_3
SQL> delete from wl.aa;
1 row deleted.

 

六、查詢數據庫中全部的角色。

 

SOL>SELECT role, password_required FROM dba_roles;

 

七、顯示角色所具備的系統權限

 

SOL>SELECT * FROM ROLE_SYS_PRIVS WHERE role=' RO1_WL';

 

八、角色所具備的對象權限

 

SOL>SELECT owner, table_name, privilege, grantable FROM ROLE_TAB_PRIVS WHERE role= ' RO1_WL';

 

九、顯示用戶的默認角色

 

SQL> SELECT granted_role FROM dba_role_privs WHERE grantee='WL' AND default_role='YES';

 

十、顯示當前用戶所具備的全部角色

 

SQL> SELECT username, granted_role FROM user_role_privs WHERE username='WL';

 

 

十一、顯示當前會話生效的角色

 

SOL>SELECT * FROM session_roles;

此子句僅適用於經過SSL身份驗證的外部用戶。大證書DN用戶錢包中的PKI證書中的可分辨名稱。最大長度證書DN是1024個字符

相關文章
相關標籤/搜索