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

测试数据库角色role,使用set role命令启用角色,设置数据库用户的缺省角色

创建角r1和r2,其中r2通过口令验证,我设置的口令是oracle

SQL> conn system/oracle

Connected.

SQL> create role r1;

Role created.

SQL> create role r2 identified by oracle;

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 identified by tj

2  quota 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> alter user tj default role r1;

User altered.

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 identified by oracle;

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权限)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值