一,角色介绍

  角色就是相关权限的命令集合,使用角色的主要目的就是为了简化权限的管理,假定有用户a,b,c为了让他们都拥有权限:连接数据库和在scott.emp表上select,insert,update。 如果采用直接授权操作,则需要进行12次授权。 因为要进行12次授权操作,所以比较麻烦!怎么办呢? 如果我们采用角色就可以简化: 首先将creat session,select on scott.emp,insert on scott.emp,update on scott.emp授予角色,然后将该角色授予a,b,c用户,这样就可以三次授权搞定。 角色分为预定义和自定义角色两类。

二,预定义角色

  预定义角色是指oracle所提供的角色,每种角色都用于执行一些特定的管理任务,下面我们介绍常用的预定义角色connect,resource,dba 。角色所包含的权限可以用以下语句查询:

select * from role_sys_privs where role='角色名';

01, connect角色

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

SQL> select * from role_sys_privs where role='CONNECT';

ROLE                           PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
CONNECT CREATE SESSION NO

02, resource角色

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

SQL> select * from role_sys_privs where role='RESOURCE';

ROLE                           PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE CLUSTER NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE TYPE NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE TABLE NO
RESOURCE CREATE INDEXTYPE NO 8 rows selected

03, dba角色

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

AQ ADMINISTRATOR ROLE:管理QUEUE的管理员角色
CONNECT: 连接数据库权限。
DBA:数据库管理员权限。
EXP FULL DATABASE:导出数据库权限。
IMP FULL DATABASE:导入数据库权限。
JAVADEBUGPRIV:调试Java程序权限。
MGMT USER:创建会话和创建触发器权限。
OEM ADVISOR:执行OEM顾问的权限。
OEM MONITOR:执行OEM监视的权限。
OLAP DBA:执行联机事务处理时的DBA权限。
OLAP USER:执行联机事务处理时的USER权限。
RECOVERY CATALOG OWNER:恢复数据字典.
RESOURCE:创建一系列数据库对象的权限。
SCHEDULER ADMIN:管理各种调度的权限,如创建任务、执行程序等

自定义角色

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

建立角色(不验证)

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

create role 角色名 not identified;

建立角色(数据库验证)

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

create role 角色名 identified by 密码;

三, 角色授权

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

01,给角色授权

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

SQL> conn system/manager;
SQL> grant create session to 角色名 with admin option
SQL> conn scott/tiger@myoral;
SQL> grant select on scott.emp to 角色名;
SQL> grant insert, update, delete on scott.emp to 角色名;

  通过上面的步骤,就给角色授权了。

001,分配角色给某个用户

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

SQL> conn system/manager;

SQL> grant 角色名 to blake with admin option;

  因为我给了with admin option选项,所以,blake可以把system分配给它的角色分配给别的用户。

002, 删除角色

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

SQL> conn system/manager;
SQL> drop role 角色名;

01, 显示角色信息

显示所有角色

SQL> select * from dba_roles;

001,显示角色具有的系统权限

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

002, 显示角色具有的对象权限

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

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

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

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

004, 精细访问控制

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

oracle 笔记---(七)__角色的更多相关文章

  1. oracle 笔记---(三)__体系架构

    查看控制文件位置 SQL> show parameter control_files; NAME TYPE VALUE ------------------------------------ ...

  2. Oracle笔记 七、PL/SQL 异常处理

    --异常处理 declare sNum number := 0; begin sNum := 5 / sNum; dbms_output.put_line(sNum); exception when ...

  3. oracle 笔记---(六)__表空间

    查看表空间的大小 select tablespace_name,block_size,contents from dba_tablespaces; 查看表空间对应的数据文件 select file_n ...

  4. oracle 笔记---(五)__内存管理

    ###查看连接池的信息 select connection_pool,status,maxsize from dba_cpool_info            

  5. oracle 笔记---(四)__数据字典

    数据字典 user_*  该视图存储了关于当前用户所拥有的对象的信息.(即所有在该用户模式下的对象) all_* 该试图存储了当前用户能够访问的对象的信息.(与user_*相比,all_* 并不需要拥 ...

  6. Oracle笔记 目录索引

    Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Or ...

  7. 韩顺平Oracle笔记

    韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring   目录(?)[-] ...

  8. oracle笔记

    一.sql*plus常用命令 (1)connect 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper] 当特权用户连接时,必须带上as sysdba或是as sysoper ...

  9. oracle 笔记

    1.Oracle认证,与其它数据库比较,安装 Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create databas ...

随机推荐

  1. 第16章-使用Spring MVC创建REST API

    1 了解REST 1.1 REST的基础知识 REST与RPC几乎没有任何关系.RPC是面向服务的,并关注于行为和动作:而REST是面向资源的,强调描述应用程序的事物和名词. 为了理解REST是什么, ...

  2. 全排列——DFS实现

    原创 之间就写过一篇全排列的博客:https://www.cnblogs.com/chiweiming/p/8727164.html 详细介绍请回看,用的方法(暂且就叫)是“交换法”,其实思路就是DF ...

  3. 牌型总数——第六届蓝桥杯C语言B组(省赛)第七题

    原创 牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌.一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张.这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得 ...

  4. webrequest、httpwebrequest、webclient、HttpClient 四个类的区别

    一.在 framework 开发环境下: webrequest.httpwebreques  都是基于Windows Api 进行包装, webclient 是基于webrequest 进行包装:(经 ...

  5. Android系列一: 环境搭建

      相关软件 JAVA  JDKAndroid StudioHAXM JDK的安装和Java环境变量的设置 1.JDK下载地址: http://www.oracle.com/technetwork/j ...

  6. css css预处理器

    CSS预处理器(css preprocessor) 1.less: 2.sass: 3.scss: 4.stylus 参考: http://hao.jser.com/archive/2507/ htt ...

  7. OC自定义文档头部注释

    1.创建文件 IDETemplateMacros.plist 2.向文件里添加内容 具体内容 // 文 件 名:___FILENAME___ // // 版权所有:___COPYRIGHT___ // ...

  8. javascript前端导出csv表格

    使用场景 后台统计经常要展示各种各样的表格数据,几乎每个表格展示都会伴随着数据的导出. 之前的解决方案都是通过发起一个相同查询参数(querystring)的导出请求(action=export),由 ...

  9. [Swift]八大排序算法(四):堆排序

    排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...

  10. Python——零基础向-四行代码下载网页上的一张图片

    一.确保安装了requests模块 还没安装的可以百度一下如何安装,很简单的. 这里简单的说一下方法:win+R,输入cmd,打开命令行窗口,输入命令:pip install requests ,即可 ...