目录
一、基础知识
1、Managing Privileges管理权限
2、System Privileges 系统特权
3、System Privileges : Example系统权限:示例
4、Who Can Grant or Revoke? 谁可以授予或撤销权限?
5、The PUBLIC
6、SYSDBA and SYSOPER
7、Revoke with ADMIN OPTION 使用ADMIN OPTION撤消
8、Some Points 一些系统权限要点
9、Revoke with GRANT OPTION 使用GRANT OPTION撤消
10、Some Points 一些对象权限要点
二、基础操作
1、Granting System Privileges 授予系统权限
2、Revoking System Privileges 撤销系统权限
3、Granting Object Privileges 授予对象权限
4、Revoking Object Privileges 撤销对象权限
Managing Privileges 管理权限
目标:
- 识别系统和对象权限
- 授予和撤销特权
- 获取权限信息
一、基础知识
1、Managing Privileges管理权限
有两种类型的甲骨文用户特权:
- System系统:使用户能够在数据库中执行特定的操作
- Object对象:使用户能够访问和操作特定对象
2、System Privileges 系统特权
- 有超过100个不同的系统权限
- privileges中的ANY关键字表示用户在任何架构中都有权限(给予ANY特权要慎重)
- GRANT命令将特权添加到一个用户或一组用户
- REVOKE命令删除特权。
3、System Privileges : Example系统权限:示例
在INDEX中没有普通的CREATE INDEX权限,因为在个CREATE TABLE创建表权限的时候就授予了创建索引的权限。
4、Who Can Grant or Revoke? 谁可以授予或撤销权限?
只有两种类型的用户可以向其他用户授予系统权限或撤销这些权限:
- 使用ADMIN选项授予特定系统权限的用户
- 具有系统权限的用户授予任何权限
只将这些特权授予受信任的用户。
5、The PUBLIC
PUBLIC是数据库中定义的用户组;它不是数据库用户或角色。数据库中的每个用户都属于这个组。因此,如果将特权授予PUBLIC,则数据库的所有用户都可以使用这些特权。
6、SYSDBA and SYSOPER
7、Revoke with ADMIN OPTION 使用ADMIN OPTION撤消
当我们撤销权限时,只撤销用户本身的权限,不会级联撤销用户已经授予的权限
8、Some Points 一些系统权限要点
- 要连接到数据库,您需要CREATESESSION特权
- 要删除属于另一个模式的表,您需要DROP ANY TABLE特权。
- CREATE ANY PROCEDURE (或EXECUTE ANY PROCED) 特权许用户创建、替换或删除 (或执行) 过程、包和函数,这包括Java类。(这个要特别注意,可能会利用系统bug创建dba权限)
- CREATETABLE特权使您能够在模式中创建、更改、删除和查询表。
- SELECT、INSERT、UPDATE和DELETE是对象特权,SELECTANYINSERTANY、UPDATEANY和DELETEANY是系统特权 (换话说它们不应用于特定对象)
9、Revoke with GRANT OPTION 使用GRANT OPTION撤消
10、Some Points 一些对象权限要点
- 对象特权可以授予用户、角色或PUBLIC。
- 如果一个视图引用其他用户的表或视图,则必须对该视图的基础表具有WITH GRANT OPTION权限,才能将该视图的任何权限授予其他用户。例如,JOHN拥有一个视图,该视图引用了JAMES中的一个表。要将视图上的SELECT权限授予另一个用户,JOHN应该已经收到了表WITH GRANT OPTION上的SELECT权限。
- 在表上接收到的任何对象特权都为被授予者提供锁定表的特权。
- 不能在列上指定SELECT权限;若要授予列级SELECT权限,请创建具有所需列的视图,并在视图上授予SELECT权限。
- 您可以指定所有或所有特权来授予对象上的所有可用特权(例如,将所有客户的权限授予James)。
- 即使您具有DBA权限,要在其他用户拥有的对象上授予权限,您必须已被授予该对象的适当权限WITHGRANTOPTION。
- 可以在一条语句中向多个用户和/或角色授予多个特权。例如,GRANTINSERT、UPDATE、选择客户到管理角色、JULIE、SCOTT;
二、基础操作
1、Granting System Privileges 授予系统权限
- 使用GRANT命令授予系统特权。
GRANT CREATE 权限名(例如:SESSION) TO 用户名;
- 被授予者可以通过ADMIN选项进一步授予系统特权。
GRANT CREATE 权限名(例如:SESSION) TO 用户名 WITH ADMIN OPTION;
2、Revoking System Privileges 撤销系统权限
- 使用REVOKE命令删除用户的系统特权。
- 具有ADMIN OPTION系统权限的用户可以撤销系统权限
- 只有通过GRANT命令授予的特权才能被撤销。
REVOKE 权限名(例如:CREATE TABLE)FROM 用户名;
3、Granting Object Privileges 授予对象权限
- 使用GRANT命令授予对象权限
- 授予必须在设保人的模式或设保人必须有GRANT OPTION。
GRANT EXECUTE ON 对象名(例如一个表:这里就写表名) To 要授权的用户名;
这个操作可以把自己的对象(按照例子来说就是表)授权给其他用户,其他用户可以查询这个表
GRANT UPDATE ON 对象 TO 授权用户名 WITH GRANT OPTION:
4、Revoking Object Privileges 撤销对象权限
- 使用REVOKE命令撤销对象权限。
- 撤销特权的用户必须是被撤销的对象特权的原始授予者。
REVOKE SELECT ON 对象 FROM 用户名;