Oracle之角色

来源:互联网 发布:刻绘大师大软件下载 编辑:程序博客网 时间:2024/05/22 12:38

角色

就是相关权限的命令集合,使用角色的主要目的就是为了简化权限管理。


(一)预定义角色

即Oracle 所提供的角色,每种角色都执行一些特定的管理任务,下面是介绍常用的预定义角色connect,resource,dba

1、connect角色

具有一般应用开发人员需要的大部分权限,当建立了一个用户后,多数情况下,只要给用户授予connect和resource角色就够了,那么connect角色具有哪些系统权限?

alter  session(修改会话)

create  cluster(创建簇)

create  database  link (数据库连接)

create   session

create  table 

create  view(创建视图)

create sequence  (创建序列)


2、resource角色具有应用开发人员需要的其它权限,比如建立存储过程,触发器等。这里需要的是resource角色隐含了unlimited  tablespace 系统权限。

resource角色包含以下系统权限:

create  cluster 

create  indextype

create  table 

create sequence

create  type 

create procedure

create   trigger

3、DBA角色

dba角色具有所有的系统权限,及with admin option 选项,默认的dba用户为sys和system 他们可以将任何系统权限授予其它用户。但是注意的是dba用户不具备sysdba和sysoper 的特权(启动和关闭数据库)


(二)自定义角色

根据自己需要定义,一般dba来创建,如果用别的用户建立,则需要create  role的系统权限,在建立角色时,可以指定验证方式(不验证,数据库验证等)

1、建立角色(不验证)

如果角色是公用的,则可以采用不验证的方式建立角色。

create    role  角色名  not  identifed;

2、建立角色(数据库验证)

采用此方式,角色名,口令存放在数据库中。当激活该角色时,必须提供口令。在建立这种角色时,需要为其提供口令

create   role  角色   identified   by  密码;

--------------------------------------------------------------------------------------

角色的授权

当建立角色时,角色没有任何权限,为了使得角色完成特定任务,必须为其授予相应的系统权限和对象权限。

1、给角色授权

给角色授予权限和用户授权没有太多区别,但是注意系统权限的unlimited  tablespace  和

对象权限with  grant  option、选项不能授予角色的。

conn system/密码

grant  create session  to   角色名   with admin option


conn scott/tiger@orcl

grant  select  on  scott.emp   to   角色名

grant  insert ,update,delete  on  scott.emp  to  角色;

授权成功

2、分配角色给用户

一般由dba来完成,若以其他身份分配角色,则要求具有grant  any  role 的系统权限

conn  system/密码

grant  角色名  to blake with  admin option

blake可以将角色分配给其他用户。


3、删除角色

使用drop  role  ,一般是dba来执行,若其他用户则要求该用户具有drop  any  role 系统权限

conn  system/密码 

drop  role   角色名


(三)显示角色信息

①显示所有角色

select  * from  dba_roles;

②角色具有的系统权限

select  privilege ,admin_option   from  role_sys_privs  where  role ='角色';

③显示角色具有的对象权限

通过查询数据字典dba_tab_prvis可以查看角色具有的对象权限或是列的权限。

④显示用户具有的角色,及默认角色

当以用户的身份连接数据库时,oracle会自动的激活默认的角色,通过查询数据字典视图dba_role_privs可以显示某个用户具有的所有角色及当前默认角色

slect  grant_role,default_role from  dba_role_privs  where  grantee="用户名";

图1图1

0 0
原创粉丝点击