- 相关权限的命令集合
使用角色的主要目的就是为了简化权限的管理
预定义角色
- oracle所提供的角色,每种角色都用于执行一些特定的管理任务
connect角色
具有一般应用开发人员需要的大部分权限
具有的系统权限
alter session
create cluster
create database link
create session
create table
create view
create sequence
resource角色
具有应用开发人员所需要的其它权限
比如建立存储过程、触发器等
隐含了unlimited tablespace (无限制表空间)系统权限
包括以下系统权限:
create cluster
create indextype
create table
create sequence
create type
create procedure
create trigger
dba角色
具有所有的系统权限及with admin option选项
不具备sysdba和sysoper的特权(启动和关闭数据库)
默认的dba用户为sys和system
自定义角色
- 一般是dba建立,其他用户需具有create role系统权限
在建立角色时可以指定验证方式(不验证,数据库验证等)
建立角色(不验证)
如果角色是公用的角色,可以采用不验证的方式建立角色
create role 角色名 not identified;
建立角色(数据库验证)
采用这种方式,角色名、口令存放在数据库中
当激活该角色时,必须提供口令
在建立该角色时,需要为其提供口令
create role 角色名 identified by 口令;
角色授权
- 当建立角色时,角色没有任何权限
为了使得角色完成特定任务,必须为其授予相应的系统、对象权限
给角色授权
系统权限的unlimited tablespace和对象权限的with grant option不能授予角色
conn system/manager;
grant create session to 角色名 with admin option;--可传递权限
conn scott/m123;--也可用system进行授权
grant select on emp to 角色名;
grant insert,update,delete on emp to 角色名;
分配角色给某个用户
一般由dba完成分配,其他用户需具有grant any role的系统权限
conn system/manager;
grant 角色名 to 用户 with admin option;--可以将此角色分配给别的用户
删除角色
一般由dba执行,其他用户需具有drop any role的系统权限
conn system/manager;
drop role 角色名;
显示角色信息
- 显示所有角色
select * from dba_roles;
- 显示角色具有的系统权限
select privilege,admin_option
from role_sys_privs
where role = '角色名';
- 显示角色具有的对象权限
通过查询数据字典视图dba_tab_privs可以查看角色具有的对象权限/列的权限 - 显示用户具有的角色及默认角色
select granted_role,default_role
from dba_role_privs
where grantee = '用户名';