权限分类
系统权限:允许用户执行一个或一类特殊的数据库操作,如创建数据库,创建用户,创建于维护表空间以及管理会话等
对象权限:对象权限是用户维护数据库对象的权利,如维护表,视图,序列号,存储过程,函数等
系统权限
与索引相关
Create any index
Alter any index
Drop any index
Create table权限中包含了Create index权限
与表相关
Create table
Create any table
Alter any table
Drop any table
Select any table
Update any table
Delte any table
创建表时必须为表分配表空间配额,或者对表空间具有无限制使用权利。
如:unlimited tablespace;
会话相关
Create session
Alter session
一个新用户创建后,需要授予session权限才能访问数据库
与表空间相关
Create tablespace
Alter tablespace
Drop tablespace
Unlimited tablespace:允许使用所有表空间的权限
授予用户权限
GRANT {system_privilege|role}
[,{system_privilege|role}]……
To {user|role|PUBLIC}
[,{user|role|PUBLIC}]…..
[WITH ADMIN OPTION]
创建用户并设置密码
Create user jane identified by abc123#;
赋予用户权限
Grant create session,create table,select any table to jane;
Select * from dba_sys_privs where grantee=’JANE’;
回收用户权限
Revoke create session,select any table,create table from jane;
部分权限授予所有用户
Grant create session,select any table to public;
查看用户系统权限
Select * from dba_sys_privs where frantee=’用户’;
SYSDBA和SYSOPER系统权限
SYSDBA权限
SYSOPER PRIVILEGES WITH ADMIN OPTION:具有sysoper所具有的操作,并且可以将这些操作授予其他用户
CREATE DATABASE :创建数据库
ALTER DATABASE BEGIN/END BACKUP:将数据库置于备份状态
RESTRICTED SESSION:设置会话限制
RECOVER DATABASE UNTIL:介质恢复数据库到UNTIL指定的状态
SYSOPER权限
STARUP:启动数据库
SHUTDOWN:关闭数据库
ALTER DATABASE OPEN |MOUNT:数据库切换到打开|挂起状态
ALTER DATABASE BACKUP CONTROLFILE TO:备份控制文件
RECOVER DATABASE:介质恢复数据库
ALTER DATABASE ARCHIVELOG:数据库设置为归档模式
回收用户权限
REVOKE {system_privilege|role}
[,{system_privilege|role}]……
FROM {user |role|PUBLIC}
[,{user|role|PUBLIC}]……
查看用户系统权限
Select * from dba_sys_privs where grantee in (‘JANE’,’LARRY’) ORDER BY grantee;
回收用户权限
Revoke create session from larry;
用户1授权给用户2,用户2授权给用户3,用户1回收用户2的权限后,用户3还依然有用户2之前的权限,说明权限不具备级联特性。
回收所有用户的系统权限
Revoke create session from PUBLIC;
授予对象权限
和系统权限相对应的是对象权限,对象包括表,视图(物化视图),序列号,存储过程等。
在这些数据库对象上实现某种特殊的行为的权限称为对象权限。如删除表
对象权限包括:alter,delete ,execute,index,insert,references,select,update
数据库对象的权限与对应的数据库对象关系的列表
表:具备出execute的所有权限
视图:具备除alter,execute,references所有权限
序列号:具备alter,select
过程:具备alter,execute
GRANT {object_privilege[(column_list)] }
[,{object _privilege[(column_list)]]……
| ALL [PRIVILEGE]
ON [schema.]object
To {user|role|PUBLIC}
[,{user|role|PUBLIC}]…..
[WITH GRANT OPTION]
GRANT:授权关键字
OBJECT_PRIVILEGE:对象权限
COLUMN_LIST:对象权限操作的列的列表
ALL:当前用户的某个数据库对象的所有权限赋予给用户
ON OBJECT:说明具体的数据库对象,如表|存储过程
WITH GRANT OPTION:新用户可以继续授权
将scott用户的表的update权限赋予给用户
Grant update on 表 to 用户 with grant option;
查看scott用户中表对象的授权信息
Select * from user_tab_privs_made;
把对表dept的列的update对象权限授予给用户
Grant update (列1,列2) on 表 to 用户;
查看用户对列的权限授予信息
Select * from user_col_privs_made;
回收对象权限
REVOKE {object_privilege[,object_privilege]….
|ALL[PRIVILEGE]}
ON [schema.] object
From {user|role|PUBLIC}
[,{user|role|PUBLIC}]…..
[CASCADE CONSTRAINTS]
回收用户对表的update权限
Revoke update on emp from larry;
验证是否回收
Select * from user_tab_privs_made where grantee=’LARRY’;
回收用户对dept表的所有权限,只能从整个表回收对象权限,不能按照列回收。此种方式间接回收了列的权限
Revoke all on dept from 用户名
Select * from user_col_privs_made where grantee=’LARRY’;
对象权限回收是级联的。如用户1授权给用户2,用户2授权给用户3,用户1回收用户2的权限,间接的用户3也丧失权限。