Oracle 角色

本文介绍了Oracle数据库中的角色概念,包括预定义角色(如connect、resource、dba)和自定义角色的创建、授权及删除方法,并提供了相关SQL命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1、预定义角色

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

(1)connect角色

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

alter  session

create   cluster

create   database  link

create  session

create  table 

create   view

create  sequence

(2)resource角色

resource角色具有应用开发人员所需要的其它权限,比如建立存储过程、触发器等。这里需要注意的是resource角色隐含了unlimited  tablespace(无限制的表空间)系统权限。resource角色包含以下系统权限:

create   cluster

create   indextype

create  table

create  sequence

create  type

create  procedure

create tigger

(3)dba角色

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


2、自定义角色

自己定义的角色,根据自己的需要来定义,一般是dba来建立,如果用别的用户来建立,则需要具有create  role的系统权限。在建立角色时可以指定验证方式(修改角色时需不需要输入密码)

(1)建立角色

①不验证

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

create  role  角色名  not  identified;

②数据库验证

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

create   role  角色名  identified  by  tigger;

(2)角色授权

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

①给角色授权

给角色授权和给用户授予权限没有太多区别。注意:系统权限的unlimited  tablespace和对象权限的with  grant   option选项是不能授予角色的。

eg:

conn   system/manger

grant  create  session  to  角色名  with  admin   option //角色可以继续传递

conn  scott/tiger

grant  select   on  emp  to 角色名

grant   insert,update,delete  on  emp  to  角色名

②非配角色给某个用户

一般分配角色是由dba来完成的,如果要以其他用户身份分配角色,则要求用户必须具有grant  any  role的系统权限

grant   角色名   to  monkey   with   admin  option //monkey可以把角色分配给别的用户

(3)删除角色

一般是dba来执行,如果用其它用户则要求该用户具有drop  any  role 系统权限。

drop   role   角色名

如果角色被删,那么被授予角色的用户还能不能登录——不能


3、显示角色信息

(1)显示所有角色

select   *  from   dba_roles;

(2)显示角色具有的系统权限

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

(3)显示角色具有的对象权限

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

(4)显示用户具有的角色,以及默认角色

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

select   granted_role,default_role  from  dba_role_privs  where  grantee='用户名';


4、精细访问控制 

是指用户可以使用函数、策略实现更加细微的安全访问控制。如果使用精细访问控制,则当在客户端发出sql语句(select,insert,update,delete)时,Oracle会控制在sql语句后追加谓词(where子句),并执行新的sql语句。通过这样的控制,可以使得不同的数据库用户在访问相同表时,返回不同的数据信息。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值