一、系统权限:
授予系统权限
要想授予其他用户或者角色系统权限,需要满足下列条件之一:
1、具有grant any privilege权限
2、用户被授予权限时带有admin option选项
grant system_privilege to user_name [with admin option]
--可以同时给用户或者角色授予多个权限或者角色,也可以同时将多个权限或者角色授予给多个用户或者角色
比如:grant create table,select any transaction to scott,resource;
--也可以将权限或者角色授予public,public在数据库是一个特殊的模式,任何都将获得被授予public的权限。
比如:grant flashback any table to public;
在授予系统权限时可以带有admin option选项。这样被授予此权限的用户也可以将此权限授予其他用户或者角色。
比如:grant advisor to scott,system with admin option;
--当同时将多个权限或者角色授予给多个用户或者角色时使用with admin option,with admin option针对所有用户或者角色以及 所有权限或者角色。
all privileges不是权限,但可是使用all privileges把所有权限授予其他用户或者角色,但不包含select any dictionary权限。
比如:grant all privileges to scott;
收回权限:
revoke system_priv from user_name [cascade constraints]
--cascade constraints 表示有关联的权限也被收回
从用户收回权限:revoke alter database from scott;
从角色收回权限:revoke audit system from dba;
从public收回权限:revoke create database link from public
可以同时从多个用户或者角色那里收回多个权限或者角色:revoke create any table,resource from scott,dba;
在收回系统权限时,不会级联收回。
二、对象权限
索引、集群、触发器、数据库连接没有对象权限,他们通过系统权限进行管理
对象权限级联收回。
授予对象权限
要想授予其他用户对象权限,用户需要满足下列其一条件:
1、对象的所有者
2、具有grant any object privilege权限
3、用户被授予对象权限时带有grant option选项
grant object_priv on schema.object to user_name [with grant option] [with hierarchy option]
--with hierarchy option 表示对象的子对象上授权给用户,只针对select。
-- 可以将同一模式对象上的多个对象权限授予多个用户或者角色,反之亦然。
比如:grant select,update on scott.emp to system,resource,public
--在授予对象权限时可以使用grant option选项,允许其他用户将此权限授予其他用户,但在将对象授予角色时不允许带grant option
比如:grant insert,index,flashback on scott.emp to system,public with grant option;
--可以使用 all将对象上的所有权限授予其他用户:grant all on scott.emp to public with grant option;
--可以授予列权限:grant update(deptno) on scott.emp to system;
收回对象权限
revoke object_priv on schema.object from username [cascade constraints]
-- 可以将同一模式对象上的多个对象权限从多个用户或者角色收回,反之亦然。
--在收回对象权限时将级联收回
--不存在列级收回权限,即使是列级授予权限,也必须表级收回
三、查询用户的权限
使用下列数据字典查询用户具有的权限
session_privs --会话具有的权限
dba_sys_privs --可以查询用户具有的系统权限
dba_tab_privs --可以查询用户具有的对象权限
dba_col_privs --查询用户具有的列级权限
system_privilege_map --查询数据库上的系统权限