wxin 发表于 2018-9-15 06:25:30

oracle数据库用户角色简单测试

  测试数据库角色role,使用set role命令启用角色,设置数据库用户的缺省角色
  创建角r1和r2,其中r2通过口令验证,我设置的口令是oracle
  SQL> conn system/oracle
  Connected.
  SQL> create role r1;
  Role created.

  SQL> create role r2>  Role created.
  给这两个角色授权,其中r2的权限包含r1的权限,也就是说r2的权限高一些
  SQL> grant create session,create table,create view to r1;
  Grant succeeded.
  SQL> grant create session,create table,create view,create procedure to r2;
  Grant succeeded.
  创建用户tj,并把两个角色授予用户,缺省情况下,当用户登陆时,两个角色都会生效。

  SQL> create user tj>  2quota 10m on users;
  User created.
  SQL> grant r1,r2 to tj;
  Grant succeeded.
  SQL> conn tj/tj
  Connected.
  SQL> select * from session_privs;
  PRIVILEGE
  ------------------------------
  CREATE SESSION
  CREATE TABLE
  CREATE VIEW
  CREATE PROCEDURE
  SQL> select * from session_roles;
  ROLE
  --------------------------------------------
  R1
  R2
  修改tj用户的缺省角色,只让r1在登陆的时候生效
  SQL> conn system/oracle
  Connected.

  SQL>>
  User>  SQL> conn tj/tj
  Connected.
  SQL> select * from session_roles;
  ROLE
  ------------------------------------------------------------
  R1
  SQL> select * from session_privs;
  PRIVILEGE
  ------------------------------
  CREATE SESSION
  CREATE TABLE
  CREATE VIEW
  如果我们决定启用角色r2,需要使用set role命令,直接做是不可以的,因为角色r2需要通过口令来启用
  SQL> set role r2;
  set role r2
  *
  ERROR at line 1:
  ORA-01979: missing or invalid password for role 'R2'
  通过口令可以启动角色r2,但是这里要注意,当启用角色R2时,原来缺省的角色R1会失效,这也是我们为什么让R2包含R1权限的原因

  SQL> set role r2>  Role set.
  SQL>select * from session_privs;
  PRIVILEGE
  ------------------------------
  CREATE SESSION
  CREATE TABLE
  CREATE VIEW
  CREATE PROCEDURE
  SQL> select * from session_roles;
  ROLE
  -------------------------------------------
  R2
  如果再次想让角色R1生效,直接使用set role命令就可以了,因为R1创建的时候没有指定口令。
  SQL> set role r1;
  Role set.
  SQL> select * from session_roles;
  ROLE
  ------------------------------------------------------------
  R1
  其实通过上面的小实验,我只是想说明,我们可以让一个用户使用一个较低权限(R1权限)工作,当需要时,通过口令使用户临时获得较高权限(R2权限)。
  oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html

页: [1]
查看完整版本: oracle数据库用户角色简单测试