一、何为角色?

  我在前面的篇幅中说明权限和用户。慢慢的在使用中你会发现一个问题:如果有一组人,他们的所需的权限是一样的,当对他们的权限进行管理的时候会很不方便。因为你要对这组中的每个用户的权限都进行管理。
有一个很好的解决办法就是:角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。那么上述问题就很好处理了,只要第一次将角色赋给这一组用户,接下来就只要针对角色进行管理就可以了。
以上是角色的一个典型用途。其实,只要明白:角色就是一组权限的集合。下面分两个部门来对oracle角色进行说明。

二、系统预定义角色
  预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询:
sql>select * from role_sys_privs where role='角色名';

1.CONNECT, RESOURCE, DBA
这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。

2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
这些角色主要用于访问数据字典视图和包。

3.EXP_FULL_DATABASE, IMP_FULL_DATABASE
这两个角色用于数据导入导出工具的使用。

4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。这两个角色用于oracle高级查询功能。

5.SNMPAGENT
用于oracle enterprise manager和Intelligent Agent

6.RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》

7.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.

二、管理角色
1.建一个角色
sql>create role role1;
2.授权给角色
sql>grant create any table,create procedure to role1;
3.授予角色给用户
sql>grant role1 to user1;
4.查看角色所包含的权限
sql>select * from role_sys_privs;
5.创建带有口令以角色(在生效带有口令的角色时必须提供口令)
sql>create role role1 identified by password1;
6.修改角色:是否需要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;
7.设置当前用户要生效的角色
(注:角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。)
sql>set role role1;//使role1生效
sql>set role role,role2;//使role1,role2生效
sql>set role role1 identified by password1;//使用带有口令的role1生效
sql>set role all;//使用该用户的所有角色生效
sql>set role none;//设置所有角色失效
sql>set role all except role1;//除role1外的该用户的所有其它角色生效。
sql>select * from SESSION_ROLES;//查看当前用户的生效的角色。
8.修改指定用户,设置其默认角色
sql>alter user user1 default role role1;
sql>alter user user1 default role all except role1;
详见oracle参考文档
9.删除角色
sql>drop role role1;
角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。

权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限
Object 对象级
System 系统级
Role 角色级
这些权限可以授予给用户、特殊用户public或角色,如果授予一个权限给特殊用户"Public"(用户public是oracle预定义的,每个用户享有这个用户享有的权限),那么就意味作将该权限授予了该数据库的所有用户。
对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角色或用户。用户可以通过角色继承权限,除了管理权限外角色服务没有其它目的。权限可以被授予,也可以用同样的方式撤销。
建立和使用角色
如前所诉,角色存在的目的就是为了使权限的管理变得轻松。建立角色使用CREATE ROLE语句,他的语法如下:

CREATE ROLE role_name IDENTIFIED BY password
CREATE ROLE role_name IDENTIFIED EXTERNALLY
CREATE ROLE role_name IDENTIFIED GLOBALLY

转自:http://blog.csdn.net/wwweducn/archive/2006/03/19/629434.aspx
缺省情况下建立的角色没有password或者其他的识别。如果使用IDENTIFIED BY 子句建立,那么角色不会自动响应,必须用SET ROLE激活。

  EXTERNALLY和GLOBALLY类型的角色由操作系统和ORACLE Service server验证。通常用户需要权限修改应用程序中使用的表单中的数据,但是只有在应用程序运行时而不是在使用ad hoc工具时,这种上下文敏感安全可以通过有PASSWORD的角色来实现。当用户在应用程序内部连结数据库时,代码将执行SET ROLE命令,通过安全验证。所以用户不需要知道角色的password,也不需要自己输入SET ROLE命令。
  对象权限
  对象权限就是指在表、视图、序列、过程、函数或包等对象上执行特殊动作的权利。有九种不同类型的权限可以授予给用户或角色。如下表:

权限 ALTER DELETE EXECUTE INDEX INSERT READ REFERENCE SELECT UPDATE
Directory no no no no no yes no no no
function no no yes no no no no no no
procedure no no yes no no no no no no
package no no yes no no no no no no
DB Object no no yes no no no no no no
Libary no no yes no no no no no no
Operation no no yes no no no no no no
Sequence yes no no no no no no no no
Table yes yes no yes yes no yes yes yes
Type no no yes no no no no no no
View no yes no no yes no no yes yes

 对象由不止一个权限,特殊权限ALL可以被授予或撤销。如TABLE的ALL权限就包括:
   SELECT,INSERT,UPDATE和DELETE,还有INDEX,ALTER,和REFERENCE。
  如何看这个表我们以ALTER权限为例进行说明
  ALTER权限
  允许执行ALTER TABLE和LOCK TABLE操作,ALTER TABLE可以进行如下操作:
    . 更改表名
    . 增加或删除列
    . 改变列的数据类型或大小
    . 将表转变为分区表
  在SEQUENCE上的ALTER权限允许执行ALTER Sequence语句,重新给sequence分配最小值、增量和缓冲区大小。
  系统权限
  系统权限需要授予者有进行系统级活动的能力,如连接数据库,更改用户会话、建立表或建立用户等等。你可以在数据字典视图SYSTEM_PRIVILEGE_MAP上获得完整的系统权限。对象权限和系统权限都通过GRANT语句授予用户或角色。需要注意的是在授予对象权限时语句应该是WITH GRANT OPTION子句,但在授予系统权象时语句是WITH ADMIN OPTION,所以在你试图授予系统权限时,使用语句WITH GRANT OPTION系统会报告一个错误:ONLY ADMIN OPTION can be specified。在考试中要特别注意这个语法和错误信息。

  

作者: 鱼の小屋

转载于:https://blog.51cto.com/cooool/1055050

oracle角色与权限相关推荐

  1. oracle常用角色权限,Oracle角色、权限的一些常用视图 - 一夜寒江

    Oracle角色.权限的一些常用视图 ORACLE中数据字典视图分为3大类 , 用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息. USER_*: 有关用户所拥有的对象 ...

  2. 修改oracle用户权限,详解如何实现Oracle修改用户权限和角色

    ------今天看了这篇文章 觉得对我们学习oracle 还是有很多帮助的,大家可以试着读读······· 这里将介绍Oracle修改用户权限的实现过程,包括一些权限管理方面的东西.希望通过本文能对大 ...

  3. oracle驱动权限如何修改,详解如何实现Oracle修改用户权限和角色

    pcMing工作室"YkX|;z%J"rD%S ------今天看了这篇文章 觉得对我们学习oracle 还是有很多帮助的,大家可以试着读读·······,qe'p"rr ...

  4. oracle中角色和用户权限,Oracle用户、角色、权限管理

    用户在会话的权利上,应该有其他操作的权利:Oracle的用户和口令不区分大小写,真是让人大跌眼镜:Oralce中,所有用户必须明确被 create or replace type address as ...

  5. Oracle用户、权限、角色管理

    Oracle 数据库用户管理 Oracle 权限设置 一.权限分类: 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限.(是针对 ...

  6. Oracle入门(九)之用户、角色与权限之间关系

    转载自 Oracle 用户,角色,权限等 权限管理是 Oracle 系统的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限.Oracle 的权限分为系统权限和数据对象权限,共一百 ...

  7. Oracle 用户,角色,权限等

    权限管理是 Oracle 系统的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限.Oracle 的权限分为系统权限和数据对象权限,共一百多种,如果单独对用户授权,很囧,有一些用户 ...

  8. Oracle基本安全之用户、角色和权限操作

    学习Oracle离不开用户.角色和权限这三个概念,下面首先解释一下这三个概念: 用户:对数据库的访问需要以适当的身份通过验证,这就是用户的作用:每个Oracle用户都有自己的用户名和密码,并且拥有他们 ...

  9. Oracle 用户,角色,权限的sql语句

    Oracle语句 作用:Oracle 数据库中实现web的用户,角色,权限管理系统 1. 用户表 create table mvc_user (   USER_ID   number(6),   US ...

最新文章

  1. jQuery.fly插件实现添加购物车抛物线效果
  2. Linux那些事儿 之 戏说USB(4)最终奥义
  3. python 博弈论 库_SHAP:Python的可解释机器学习库
  4. 宝塔网设置伪静态进行隐藏php后缀名,nextcloud宝塔面板nginx伪静态-去除index.php
  5. mongo php update 写法,mongodb update 字符 操作
  6. CSS实现背景透明而背景上的文字不透明
  7. 用EL表达式显示客户端使用的浏览器
  8. GCF(2)---GCF中LAUNCH BROWSER测项注意事项
  9. 程序员如何成为编程高手并以此创业
  10. python选择哪个版本安装-初学Python版本选择
  11. 直播预告 | 揭秘时序数据库极致性能背后的存储引擎
  12. HDU 6287 口算训练 (质因数分解)
  13. MDK编译报错Error: L6218E: Undefined symbol main (referred from __rtentry2.o)
  14. LeetCode第82场双周赛
  15. 网络协议-TCP和UDP最完整的区别介绍
  16. 户外直播、移动直播遇到弱网信号差,如何保证流畅又高清画面传输?
  17. 计算机英语构词法,计算机英语术语的构词方法及其汉译方法
  18. MySQL表如何导入图片_mysql中怎样插入图片
  19. html基础之好看的header
  20. 为开源新时代赋能 2021开源科技节完美落幕

热门文章

  1. ubuntu下apt相关操作
  2. leetcode刷题:不同路径
  3. mysql根据排序取前百分之二十_MySQL 性能优化 MySQL常见SQL错误用法
  4. win7计算机无法远程访问,win7无法被远程桌面连接的几种解决方法
  5. 变焦什么意思_变焦镜头中的恒定光圈与浮动光圈是什么意思?萌新摄影分享指南!...
  6. qt高亮快捷键_Qt高级——QtCreator常用快捷键
  7. 楼盘管理系统_教育信息化2.0,2019年校园智慧后勤管理系统五大品牌
  8. MySQL Spatial Analysis Functions(空间计算方法)
  9. Matplotlib 三维图像 API
  10. matplotlib xticks yticks