当用户访问数据库,用户就必需要有访问数据库的系统权限,建立表/试图要有建立表试图的权限
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.