zoukankan      html  css  js  c++  java
  • oracle 11g 学习笔记 11_2

    管理权限和角色

    *介绍
    当刚刚建立用户时,用户没有任何权限,也不能执行任何操作、如果要执行某种特定的数据库操作,则必须为其授予系统的权限;如果用户要访问其它方案的对象,则必须为其授予对象的权限,为了简化权限的管理,可以使用角色。

    一、权限

    1、系统权限

    什么是系统权限?系统权限有哪些,如何赋给系统权限?
    用户针对数据库的权限 ,系统级别的权限,比如能不能建库,能不能建表,能不能登录数据库,能不能创建用户等。。
    系统权限指执行特定类型sql命令的权利,它用于控制用户可以执行的一个或是一组数据库操作,比如当用户具有create table权限时,可以在其方案中建表,当用户具有create any table权限时,可以在任何方案中建表。oracle提供了上百多种系统权限。
    常用的有:
    create session 连接数据库 create table 建表 create view 建视图 create public synonyn 建同义词
    create procedure 建过程、函数、包 create trigger 建触发器 create cluster 建族

    .系统权限有哪些,可以通过这个命令来查询
    select * from system_privilege_map order by name;
    *需要注意的是:系统权限不是级联回收。

    2、对象权限

    对象权限:是一个方案去访问别的方案的数据对象的权力
    方案:当一个用户(假如是Tom)创建时,那么oracle会自动地给Tom用户对应了一个叫Tom的方案,方案的名字和用户的名字完全一样的,里面有各种各样的数据对象:表,视图,触发器,存储过程等等。Tom用户登录后,方案里面的东西都归Tom所有。当Tom用户想要去访问scott方案的表时,那么就要被scott赋予相应的对象权限。
    常用的对象权限有:
    alter 修改(表修改) delete 删除 select 查询 insert 添加
    update 修改(数据修改) index 索引 references 引用 execute 执行

    .查看用户或者角色的所有对象权限、
    select distinct privilege from dba_tab_privs;
    *授予对象权限
    授予对象权限是由对象权限的所有者或者是sys、system用户来完成的,命令为 grant。如果带有 with grant option选项,那么则可以继续将该权限授予给其它用户。
    .比如创建了 pangzi 用户,要可以查询scott.emp的表,那么就必须授予pangzi相应的对象权限
    grant select on emp to pangzi;
    .希望pangzi可以修改scott.emp的表,并且可以将该权限授予给其它用户。
    grant update on emp to pangzi with grant option;
    .希望pangzi可以拥有 查询,修改,删除的权限。
    grant all on emp to pangzi;
    *授予列权限,可以控制得更加精细
    .希望pangzi可以修改scott.emp 的表的ename, sal数据。
    grant update on emp(ename,sal) to pangzi;
    *回收权限
    收回对象权限可以由对象的所有者来完成,也可以由sys, system用户来完成. 命令 revoke
    .收回pangzi可以查询scott.emp的权限
    revoke select on emp from pangzi;
    需要注意的是:对象权限的回收是级联回收的。也就是说,scott用户授予了pangzi 一个select权限并拥有了 with grant option 权限,当pangzi又授予了另外一个用户shouzi这个select权限时,要是scott对pangzi收回了select权限,那么,shouzi的select权限也将没有了。

    二、角色:简化权限的管理

    假如希望Tom用户可以登录、创建表、访问scott方案的表,如果要给Tom这三个权限,就要赋值三次,那就太麻烦了。一个用户创建之后就要给它许多默认的权限,要是一个一个给它的话,比较麻烦。于是oracle给了这样一种方式管理权限:
    将 create session,select,insert,update授予给角色,然后将该角色授予给用户,那么该用户就拥有那些权限了。
    角色分为预定义角色和自定义角色:

    1.预定义角色

    *connect 角色
    connect 角色具有一般应用开发人员需要的大部分权限,当建立了一个用户后,多数情况下,只要给用户授予connect和resource 角色就够了。connect角色具有的系统权限:
    alter session 连接数据库
    create cluster
    create database link
    create table
    create view
    create sequence
    *resource角色具有的系统权限
    create cluster
    create indextype
    create table
    create sequence
    create type
    create procedure
    create trigger

    *dba角色
    dba角色具有所有的系统权限,及with admin option选项,默认的dba用户为sys和system,他们可以将任何系统权限授予其它用户。但是,dba角色不具备sysdba和sysoper的特权(启动和关闭数据库)。 
    *显示角色信息
    .显示所有角色
    select * from dba_roles;
    .显示角色具有的角色。
    这个可以通过数据字典视图dba_role_privs来显示某个用户具有的所有角色及当前默认角色。
    select granted_role,default_role from dba_role_privs where grantee = '用户名';
    当然了,这个用pl/sql developer工具查看更加直观。
  • 相关阅读:
    compose 函数实现
    垂直居中的实现方式
    数组去重方法总结
    前端性能优化
    简简单单的几个正则表达式
    ES6
    Vue不兼容IE8原因以及Object.defineProperty详解
    Vuex(二)——关于store
    Vuex(一)——vuejs的状态管理模式
    关于REST的浅显了解
  • 原文地址:https://www.cnblogs.com/tgxblue/p/4217429.html
Copyright © 2011-2022 走看看