一、 权限的概念:指执行特定类型的SQL 语句或访问另一个用户的对象的权利。其作用:
• 连接到数据库
• 创建表
• 从另一用户的表中选择行
• 执行另一用户的已存储过程
二、 权限分类:系统权限和对象权限
(一) 系统权限:每一系统权限都允许用户执行某一特定的数据库操作或某类数据库操作,例如,创建表空间的权限就是一种系统权限。
(二) 对象权限:每一对象权限都允许用户对特定对象(如表、视图、序列、过程、函数或程序包)执行特定的操作。
三、 系统权限:有100多种不同的系统权限;权限中的关键字ANY 表示用户在任何方案中都具备这种权限
(一) 分类:
• 允许执行系统范围操作的权限;如CREATE SESSION,CREATE TABLESPACE
• 允许管理用户自己方案中的对象的权限;如CREATE TABLE
• 允许管理任何方案中的对象的权限;如CREATE ANY TABLE
|
类别 |
示例 |
|
索引(INDEX) |
CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX |
|
表(TABLE) |
CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE |
|
会话(SESSION) |
CREATE SESSION ALTER SESSION RESTRICTED SESSION |
|
表空间(TABLESPACE)
|
CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE |
备注:
• 没有CREATE INDEX 权限。
• CREATE TABLE 包括CREATE INDEX 和ANALYZE 命令。用户必须有表空间的限额,或必须被授予UNLIMITED TABLESPACE 权限。
• 诸如CREATE TABLE、CREATE PROCEDURE 或CREATE CLUSTER 等权限包括删除这些对象的权限。
• 无法将UNLIMITED TABLESPACE 授予角色。
• DROP ANY TABLE 权限是截断另一方案中的表所必需的。
(二) 授权:
GRANT {system_privilege|role}
[, {system_privilege|role} ]...
TO {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[WITH ADMIN OPTION]
其中:
system_privilege:指定要授予的系统权限
Role:指定要授予的角色名
PUBLIC:将系统权限授予所有用户
WITH ADMIN OPTION:允许被授予者进一步为其他用户或角色授予权限或角色
(三) 撤销:撤消系统权限时没有级联效果,这与该系统权限是否使用ADMIN OPTION 授予无关。
REVOKE {system_privilege|role}
[, {system_privilege|role} ]...
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
其中:
• REVOKE 命令只能撤消使用GRANT 命令直接授予的权限。
• 撤消系统权限可能对一些相关对象有影响。例如,如果将SELECT ANY TABLE 予某用户,而该用户已创建了使用其它方案中的表的过程或视图,则撤消该权限些过程或视图无效。
四、 对象权限:
(一) 分类:
|
对象权限 |
表 |
视图 |
序列 |
过程 |
|
ALTER |
√ |
√ |
√ |
|
|
DELETE |
√ |
√ |
|
|
|
EXECUTE |
|
|
|
√ |
|
INDEX |
√ |
√ |
|
|
|
INSERT |
√ |
√ |
|
|
|
REFERENCES |
√ |
|
|
|
|
SELECT |
√ |
√ |
√ |
|
|
UPDATE |
√ |
√ |
|
|
需要注意的是适用于序列的权限只有SELECT 和ALTER。通过指定可更新列的子集可以对UPDATE、REFERENCES 和INSERT 权限加以限制。通过用列的子集创建视图并授予对于该视图的SELECT 权限,则可对SELECT 权限加以限制。对于同义词的授权会转换为对于该同义词所引用的基表的授权。
(二) 授权:
GRANT { object_privilege [(column_list)]
[, object_privilege [(column_list)] ]...
|ALL [PRIVILEGES]}
ON [schema.]object
TO {user|role|PUBLIC}[, {user|role|PUBLIC} ]...
[WITH GRANT OPTION]
其中:
object_privilege:指定要授予的对象权限
column_list:指定表或视图列(只在授予INSERT、REFERENCES 或UPDATE 权限
才指定。)
ALL:将所有权限授予已被授予WITH GRANT OPTION 的对象
ON object:标识将要被授予权限的对象
WITH GRANT OPTION:使被授予者能够将对象权限授予其他用户或角色
(三) 撤销:如果对象权限是用WITH GRANT OPTION 授予的,则撤消对象权限也将导致级联效果。
REVOKE { object_privilege
[, object_privilege ]...
| ALL [PRIVILEGES] }
ON [schema.]object
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[CASCADE CONSTRAINTS]
其中:
object_privilege:指定将撤消的对象权限
ALL:撤消已授予用户的所有对象权限
ON:标识将撤消其对象权限的对象
FROM:标识将撤消其对象权限的用户或角色
CASCADE CONSTRAINTS:删除撤消使用REFERENCES 或ALL 权限定义的任何引用完整性约束
限制:
授予者只能对其已经授予权限的用户撤消对象权限。
五、 相关视图:
DBA_SYS_PRIVS:列出授予用户和角色的系统权限
SESSION_PRIVS:列出用户当前可用的权限
DBA_TAB_PRIVS:列出对于数据库中所有对象的所有授权
DBA_COL_PRIVS:描述数据库中的所有对象-列授权
六、 特殊权限:
(一) SYSDBA 和SYSOPER 权限
|
类别 |
示例 |
|
SYSOPER |
RECOVER DATABASE ALTER DATABASE BACKUP CONTROLFILE TO ALTER DATABASE OPEN | MOUNT SHUTDOWN STARTUP ALTER DATABASE ARCHIVELOG RESTRICTED SESSION |
|
SYSDBA |
SYSOPER PRIVILEGES WITH ADMIN OPTION CREATE DATABASE ALTER TABLESPACE BEGIN/END BACKUP RESTRICTED SESSION RECOVER DATABASE UNTIL |
(二) 系统权限限制
• O7_DICTIONARY_ACCESSIBILITY 参数
• 控制有关SYSTEM 权限的限制
• 如果设置为TRUE,允许访问SYS 方案中的对象
• 缺省值为FALSE:可确保允许访问任何方案的系统权限不允许访问SYS 方案
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9333283/viewspace-697640/ ,如需转载,请注明出处,否则将追究法律责任。