當用戶訪問數據庫,用戶就必需要有訪問數據庫的系統權限,建立表/試圖要有建立表試圖的權限
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.