浅析数据库的角色管理

为了方便数据库管理Oracle数据库预留了许多系统角色,我们列举其中必须要掌握的角色.

CONNECT:CREATE SESSION权限,在较早数据库版本有创建对象等权限

RESOURCE:可以创建数据库对象(如表、索引、存储过程等等),还包含LOGSDBY_ADMINISTRATOR角色的UNLIMITED TABLESPACE权限。



DBA:拥有大多数系统权限,几乎可以管理数据库的所有方面

SELECT_CATALOG_ROLE:可以查看包含SYS用户内的所有数据字典

EXECUTE_CATALOG_ROLE:可以执行包含SYS用户内的所有数据字典

DELETE_CATALOG_ROLE:可以删除系统审计表AUD$记录

SCHEDULER_ADMIN:可以使用DBMS_SCHEDULER包管理调度服务

PUBLIC:此角色始终授予每个数据库用户,如果将某个权限授予给PUBLIC,那么该权限将授予给所有用户。PUBLIC角色不同于其他角色,它并不会出现在DBA_ROLES试图中。


Public角色与其他角色不同,不能revoke


可以这样理解,PUBLIC是隐式授权给说有用户的角色,PUBLIC的权限当然是极其重要的
创建角色

       角色不是模式对象,不属于任何人。使用CREATE ROLE role1创建角色。

通过给role1角色分配合理的权限,然后把角色分配给用户,来管理用户权限。这样会简化权限管理。比如分配查询scott1.test表的权限给角色role1,然后再分配角色role1给用户scott1,用户scott1就可以查看scott1.test表了。

默认角色

然后使用

       ALTER USER role1 DEFAULT ROLE role1;

去指定用户的默认角色

比如在一下例子中,只给scott用户授权CONNECT和RESOURCE角色,然后设置scott的默认用户仅为connect

用户已经被赋予RESOURCE角色,但是此角色并不是默认角色,没有CREATE TABLE的权限。

使用如下语句可以设置用户的所有默认角色

ALTER USER role1 DEFAULT ROLE NONE;

ALTER USER role1 DEFAULT ROLE ALL;

角色密码与启用角色

如果在创建角色的时候不显示的设置密码或者显示设置NOT IDENTIFIED,那么角色的认证方式为NONE。给角色密码需要相应权限,使用以下命令可以给角色设置密码

CREATE ROLE role1 IDENTIFIED BY password;

ALTER ROLE role1 IDENTIFIED BY password;

我们给角色role1设置密码后,查看role1角色的状态

在PASSWORD_REQUIRED和AUTENTICATION_TYPE字段中可以看出认证方式不是NONE而是PASSWORD。这个时候连接scott用户再次查询刚才的scott1.test表

很明显刚才授予了权限且scott用户可以查询scott1.test表,只是设置了role1角色密码导致了role1角色不可用。既然角色不可用,我们就需要启用角色,使用如下命令

SET ROLE role1 IDENTIFIED BY password

可以再次启用角色。

我们在测试中,首先使用SYS用户去启用角色role1,但是scott任然无法查看表scott1.test,然后使用SCOTT用户去启用角色role1,这个时候角色可用了。从以上例子可以总结,在角色设置了密码以后,用户想要启用这个角色并使用角色下的权限,必须自行去“解锁”(启用)角色。

 

再次登录scott用户,scott1.test表任然不可用,也就是说,当角色被标记为PASSWORD时,用户每次登录都必须重新输入角色密码启用用户。

取消角色密码认证

 ALTER ROLE role1 NOT IDENTIFIED;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31461640/viewspace-2140593/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31461640/viewspace-2140593/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值