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.

相关文章
相关标签/搜索