 介绍

角色就是相关权限的命令集合,使用角色的主要目的就是为了简化权限的管理,假定有用户 a,b,c 为了让他们都拥有权限

1. 连接数据库

2. 在 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

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 trigger

3.dba 角色

Oracle  笔记

35

dba 角色具有所有的系统权限,及 with admin option 选项,默认的 dba 用户为 sys 和 system,它们可以将任何系统权限授予

其他用户。但是要注意的是 dba 角色不具备 sysdba 和 sysoper 的特权(启动和关闭数据库)。

 自定义角色

顾名思义就是自己定义的角色,根据自己的需要来定义。一般是 dba 来建立,如果用别的用户来建立,则需要具有 create role

的系统权限。在建立角色时可以指定验证方式(不验证,数据库验证等)。

1.建立角色(不验证)

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

create role 角色名 not identified;

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

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

令。

create role 角色名 identified by 密码;

角色授权

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

1.给角色授权

给角色授予权限和给用户授权没有太多区别,但是要注意,系统权限的 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 角色名;

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

2.分配角色给某个用户

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

SQL> conn system/manager;

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

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

 删除角色

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

SQL> conn system/manager;

SQL> drop role 角色名;

问题:如果角色被删除,那么被授予角色的用户是否还具有之前角色里的权限?

答案:不具有了

 显示角色信息

1.显示所有角色

SQL> select * from dba_roles;

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

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

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

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

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

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

用户具有的所有角色及当前默认的角色

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

 精细访问控制

精细访问控制是指用户可以使用函数,策略实现更加细微的安全访问控制。如果使用精细访问控制,则当在客户端发出 sql

语句(select,insert,update,delete)时,oracle 会自动在 sql 语句后追加谓词(where 子句),并执行新的 sql 语句,

通过这样的控制,可以使得不同的数据库用户在访问相同表时,返回不同的数据信息,如:

用户 scott       blake         jones

策略     emp_access

数据库表 emp

如上图所示,通过策略 emp_access,用户 scott,black,jones 在执行相同的 sql 语句时,可以返回不同的结果。例如:当执行 select ename from emp; 时,根据实际情况可以返回不同的结果。

权限<九>的更多相关文章

  1. 鸟哥的linux私房菜 - 第5/6/7/9章(在线求助 man page、Linux档案权限与目录配置、Linux档案与目录管理、压缩与打包)

    第五章.在线求助 man page X window与文本模式的切换 Ctrl+Alt+F1~F6:文字接口登入tty1~tty6终端机: Ctrl+Alt+F7:图形接口桌面. 注销当前用户:exi ...

  2. 看完这篇 Linux 权限后,通透了!

    我们在使用 Linux 的过程中,或多或少都会遇到一些关于使用者和群组的问题,比如最常见的你想要在某个路径下执行某个指令,会经常出现这个错误提示 . permission denied 反正我大概率见 ...

  3. 鸟哥的Linux私房菜学习笔记——文件权限与目录配置

    Linux的文件权限和目录配置 在linux中的每个用户必需属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. (1)所有者 一般为文件的创建者,谁创建了该文件,就是天 ...

  4. MS SQL SERVER 2000 常用 Tran-SQL 语句

    一.创建数据库:create database mydb-创建数据库mydbon primary-在primary文件组中( name = mydb_data1,filename = 'd:\sql ...

  5. Centos7 使用nginx部署vue项目

    一.安装nginx #设置源 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0 ...

  6. ApacheCN Kali Linux 译文集 20211020 更新

    Kali Linux 秘籍 中文版 第一章 安装和启动Kali 第二章 定制 Kali Linux 第三章 高级测试环境 第四章 信息收集 第五章 漏洞评估 第六章 漏洞利用 第七章 权限提升 第八章 ...

  7. KingbaseES R6 集群手工配置VIP案例

    经常有用户问,V8R6集群搭建时没有配置VIP,搭建完成后,如何添加VIP?以下向大家介绍下手动添加VIP 的过程. 一.操作系统环境 操作系统(UOS): root@uos01:~# cat /et ...

  8. Linux学习之CentOS(九)-----文件与目录的默认权限与隐藏权限

    文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...

  9. SpringSecurity权限管理系统实战—九、数据权限的配置

    目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战-三 ...

随机推荐

  1. nokogiri如何使用

    直接来个简单的代码实例就明白啦! require 'nokogiri' xml_data=<<XML <library> <NAME><![CDATA[Fav ...

  2. visual.studio.15.preview5 编译器

    前段时间微软更新了新版开发工具visual studio 15 preview5,安装后连文件结构目录都变了,想提取编译器还找不到. 不是原来的VC\BIN目录,已迁移到IDE\MSVC\14.10. ...

  3. [经验交流] Apache Mesos Docker集群初探

    前言 因工作需要,我对基于Apache Mesos 的 Docker 集群作了一点研究,并搭建了一套环境,以下是资料分享. 1. Apache Mesos概述 Apache Mesos是一款开源群集管 ...

  4. vue.js 2.0开发

    创建一个工程文件: css中引用的是bootstrap的css,js中就是vue,index页面: <!DOCTYPE html> <html> <head> &l ...

  5. firefox与IE对js和CSS的区别(转http://log-cd.javaeye.com/blog/548665)

     ? "700px" : document.body.clientWidth>1000 ? "1000px" : "auto");// ...

  6. [FFmpeg] ffmpeg参数详解

    ffmpeg 参数语法 ffmpeg [[options][`-i' input_file]]... {[options] output_file}... 如果没有输入文件,那么视音频捕捉就会起作用. ...

  7. 关于SoCFPGA 编译问答

    1.在Qsys里面添加了一个新的组件(不是hps里面的东西),挂在Avalon总线上,如添加了一个新ADC组件,是否需要重新编译dtb. 答:  不需要. 2.修改了相关Qsys里面的东西,是否也需要 ...

  8. visudo 使用摘记

    1. sudo <command> 免输入密码.root 运行 visudo. 添加命令行:<username>    <hostname>=NOPASSWD: & ...

  9. alarm rtc

    http://sharp2wing.iteye.com/blog/1329518 http://blog.csdn.net/sking002007/article/details/6593809 io ...

  10. oracle PL/SQL管理命令语句

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...