DCL-- 數據庫控制語言

權限:

 

一、系統權限


當用戶訪問數據庫,用戶就必需要有訪問數據庫的系統權限,建立表/試圖要有建立表試圖的權限
system_privilege_map
dba_sys_privs
user_sys_privs
session_privs
create session


SQL> select * from dba_sys_privs;
SQL> select privilege from user_sys_privs //查看當前用戶的權限

SQL> select * from user_sys_privs; //當前用戶擁有的權限

USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SCOTT UNLIMITED TABLESPACE NO

SQL> select * from session_privs; //當前的會話具備的權限

PRIVILEGE
----------------------------------------
CREATE SESSION //建立會話
UNLIMITED TABLESPACE //無限制的使用表空間
CREATE TABLE
CREATE CLUSTER //建簇
CREATE SEQUENCE //序列
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

10 rows selected.

grant 系統權限 ... to 用戶名 //給普通用戶附權
user--新建是普通用戶
schma--賦權以後爲方案
revoke 系統權限...from 用戶名 //回收權限

grant create session to test; //給test用戶附上建立會話的權利
grant unlimited tablespace,create view to test;//

給咱們的SCOTT dba的權限,SCOTT就能夠爲咱們的test受權
grant 系統權限....to 用戶名 with admin option; //系統權限的級聯
SQL> grant create table to SCOTT with admin option;
//如今SCOTT用戶能夠給其餘任何用戶受權create table ,也能夠回收
 數據庫

二、對象權限



table_pricilege_map
dba_tab_privs
user_tab_privs
user_col_privs;


SQL> select * from scott.emp //查看對象

SQL> desc dba_tab_privs; //dba 用戶據有哪些對象權限



SQL> select grantee ,owner,table_name from dba_tab_privs;

當前系統具備哪些對象權限session

SQL> select * from table_privilege_map;  //當前系統具備哪些對象權限

 PRIVILEGE NAME
---------- ----------------------------------------
 0 ALTER
 1 AUDIT
 2 COMMENT
 3 DELETE
 4 GRANT
 5 INDEX
 6 INSERT
 7 LOCK
 8 RENAME
 9 SELECT
10 UPDATE

 PRIVILEGE NAME
---------- ----------------------------------------
11 REFERENCES
12 EXECUTE
16 CREATE
17 READ
18 WRITE
20 ENQUEUE
21 DEQUEUE
22 UNDER
23 ON COMMIT REFRESH
24 QUERY REWRITE
26 DEBUG

 PRIVILEGE NAME
---------- ----------------------------------------
27 FLASHBACK
28 MERGE VIEW
29 USE
30 FLASHBACK ARCHIVE

26 rows selected.ide



當前用戶具備哪些對象權限spa

SQL> select * from user_tab_privs;

no rows selected

SQL> 
SQL> select * from user_col_privs;   //當前用戶下,對某個列擁有的對象權限



 對象



grant 對象權限 on 方案名.對象名 to 用戶


scott用戶---可訪問 test下的t1表ci

conn / as sysdba
grant select on test.t1 to scott;
>>>revoke  select on test.t1 from scott;//回收權限

conn scott
select * from test.t1;

conn / as sysdba
grant update(name) on test.t1 to scott;  //只對某一個列進行操做it



grant 對象權限 on 方案名.對象名 to 用戶 with grant option //受權級聯

>>>grant select on test.t1 to scott with grant option ; //scott能夠給其餘用戶受權

系統級聯出去的權限回收的時候,不會被回收。對象權限級聯受權出去的權限回收的時候,一併被回收
 io

三、角色權限



一、create role 角色名字 [idedtifief by 密碼] ;//通常不設密碼

role_sys_privs
user_role_privs
dba_role_privs
role_role_privs //角色下面的角色權限

給角色受權
grand 系統權限...to 角色名;
grand 對象權限...on 方案名.對象名...to 角色名;
revoke 角色名 from 用戶名 //回收角色
 table

SQL> conn / as sysdba   
Connected.
SQL> desc role_sys_privs;  //查看系統中擁有的角色
 Name    Null?    Type
 ----------------------------------------- -------- ----------------------------
 ROLE    NOT NULL VARCHAR2(30)
 PRIVILEGE    NOT NULL VARCHAR2(40)
 ADMIN_OPTION     VARCHAR2(3)
 SQL> select distinct role from role_sys_privs;  

ROLE
------------------------------
EXP_FULL_DATABASE
AQ_ADMINISTRATOR_ROLE
DBA
OEM_ADVISOR
RECOVERY_CATALOG_OWNER
SCHEDULER_ADMIN
OLAP_USER
RESOURCE
IMP_FULL_DATABASE
OWB$CLIENT
DATAPUMP_EXP_FULL_DATABASE

ROLE
------------------------------
CONNECT
OLAP_DBA
JAVADEBUGPRIV
DATAPUMP_IMP_FULL_DATABASE
OEM_MONITOR                                          //oem的監控
MGMT_USER
LOGSTDBY_ADMINISTRATOR

18 rows selected.test



角色擁有的系統權限


SQL> desc dba_role_privs;
 Name    Null?    Type
 ----------------------------------------- -------- ----------------------------
 GRANTEE     VARCHAR2(30)
 GRANTED_ROLE    NOT NULL VARCHAR2(30)
 ADMIN_OPTION     VARCHAR2(3)
 DEFAULT_ROLE     VARCHAR2(3)

SQL> select * from dba_role_privs; //dba 




某個角色具備哪些系統權限

SQL> select role , privilege from role_sys_privs where role='CONNECT';

ROLE        PRIVILEGE
------------------------------ ----------------------------------------
CONNECT         CREATE SESSION

SQL> select * from user_role_privs; //當前用戶下的角色擁有的系統權限 >>>select * from session_privs; SQL> create role r1; Role created. SQL> grant create session,create table,unlimited tablespace to r1; SQL> grant select ,insert ,update,delete on scott.emp to r1; SQL> grant r1 to sarah; //sarah 入職時 SQL> revoke r1 from sarah; //sarah 離職時 SQL> create role r2; Role created. SQL> grant create view to r2; Grant succeeded. SQL> grant r2 to r1; //把r2的角色授予r1 Grant succeeded.

相關文章
相關標籤/搜索