zoukankan      html  css  js  c++  java
  • oracle: default role 详解(转)

    oracle: default role 详解(转)

    Oracle 作者:warehouse 时间:2018-07-26 08:08:22 494 0

    文章写得不错,转载一下,仅供分享收藏! 

    ORACLE创建角色的时候是可以带密码验证的。当为一个用户授予角色时,如果是授予的DEFAULT的时候,那么这个用户登录的时候自动就具备了这个角色,不需要进行这个角色的密码验证的。如果不是DEFAULT的,那么可以使用SET ROLE ROLE_NAME IDENTIFIED ROLE_PASSWORD来进行密码验证后,用户才能具有相应的角色。

     

    oracle权限体系中有个default role,比较难以理解。下面用实例说明一下作用。

    我们可以给某个用户分配一些角色,比如role r1,r2,r3,r4,而其中可以将某些角色比如r1设置为default role,其他的不设置成default role,这样,当该用户登录时,自动具有default role中所包含的权限,其他的角色所具有的权限要通过set role 角色来获得。

    下面我们举个例子:

    (1)sys用户作为sysdba登录,创建4个角色:


    create role r1;

    create role r2 identified by r2;

    create role r3 identified by r3;

    create role r4 identified by r4;


    (2)sys用户赋予这四个角色对应的权限:


    grant create session to r1;

    grant select on hr.test to r2;  (这里hr.test是我新创建的一个表,里面有ID和name两列)

    grant update(name) on hr.test to r3;

    grant insert on hr.test to r3;

    grant delete on hr.test to r4;


    (3)sys用户创建一个用户u3

    create user u3 identified by u3;

    (4)将角色r1,r2,r3,r4赋予用户u3

    grant r1,r2,r3,r4 to u3;

    在修改用户u3的默认角色前,r1,r2,r3,r4 角色均为u3的 default role,以u3用户登录,查询、增删改hr.test,都没有问题。

    (5)现在sys用户修改用户u3的default role,仅将r1作为u3的默认角色:

    alter user u3 default role r1;  --此时将覆盖原来的设置,u3 的default role =r1,仅仅有登录权限。

    (6)用户u3 log off ,然后再log on,进去后发现,

    查询、增删改hr.test都不能进行。

    (7) 用户自己打开role权限

    set role r2 identified by r2;

    这时执行 select * from hr.test,发现没有问题。增删改不行。

    将对应的角色打开:

    set role r3 identified by r3;

    此时修改和插入记录没有问题,但是select * from hr.test 确发现不行了。证明此时用户所属的角色仅仅是默认角色r1,和刚刚打开的角色r3,而r2被set role r3 identified by r3;覆盖掉了。

    那要同时有r2,r3,r4的权限怎么办呢?

    set role r2 identified by r2,r3 identified by r3,r4 identified by r4。此时就同时对hr.test可以进行查询,增删改了。

    不过set role 的效果是临时的,只是当前session有效,其他的session无效,当结束当前session后再登录,又只有default role 的权限了。

  • 相关阅读:
    模块化 —— CommonJS、AMD、UMD、ESM(下)
    模块化 —— CommonJS、AMD、UMD、ESM(上)
    移动端事件(四)—— 函数防抖和函数节流
    移动端事件(三)—— 横竖屏与加速度、移动的方块
    一起来学JavaScript吧(JS兔子领进门)
    【资源】一些常用的前端资源网站(不定期更新)
    redis
    django-高并发解决方案--负载均衡
    输入某年某月某日,判断这一天是这一年的第几天
    一篇英文文档中找出频数最多的10个单词
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/12791971.html
Copyright © 2011-2022 走看看