您的位置:首页 > 数据库 > Oracle

Oracle 11g学习笔记--角色

2016-10-19 19:57 239 查看

Oracle 11g学习笔记–角色

说明:本文总结自《Oracle Database 11g SQL 开发指南》 Jason Price著

角色就是一组特权,他可以分配给一个用户或者其他角色,角色的优点和特性:

●并不是将特权直接授予一个用户,而是先创建角色,向该角色授予一些特权,然后再将该角色授予多个用户或者角色;

●在增加或删除一个角色的某种特权时,被授予该角色的所有用户和角色都会自动获得新增加的特权或自动失去这种特权;

●可以将多个角色授予给一个用户或角色;

●可以为角色设置密码;

创建角色

--授权
connect sys/admin as sysdba
grant create role to user1;
--创建角色
connect user1/admin
--创建角色时可以设置密码,因为重新进入系统时,用户的非默认角色不会生效,所以必须执行set role role_name [identified by password].对于其他的不需要密码的,可以运行set role all except need_password_role
create role read [identified by admin];


为角色授权

grant select, insert on user1.friends to read;


将角色授予用户

grant read to user2;


检查授予用户的角色

通过查询user_role_privs可以检查已经授予一个用户哪些角色,

部分列的定义如下

类型说明
usernamevarchar2(20)该角色所授予的用户名
granted_rolevarchar(30)授予该角色的角色名
admin_optionvarchar2(3)该角色是否可以将该角色授予其他用户或角色
default_rolevarchar2(3)当用户登录到数据库上是,是否默认启用该角色
os_grantedvarchar2(3)该角色是否有操作系统授予

检查授予角色的系统特权

通过查询role_sys_privs可以检查已经授予一个角色哪些系统特权。

部分的定义如下:

类型说明
rolevarchar2(30)角色名
privilegevarchar2(40)授予该角色的系统特权
admin_optionvarchar2(3)授予该特权时是否使用了with admin option选项

检查授予角色的对象特权

通过查询role_tab_privs可以检查已经授予一个角色哪些对象特权。

部分列的定义如下:

类型说明
rolevarchar2(30)该特权所授予的用户
ownervarchar2(30)拥有该角色对象的用户
table_namevarchar2(30)所授予的特权所操作的对象名
column_namevarchar(30)列名(如果适用)
privilegevarchar2(40)对该对象的特权
grantablevarchar2(3)授予该特权时是否使用with grant option选项

默认角色

默认的情况下,在将角色授予用户时,就为该用户启用了该角色。这就是说,在用户连接到数据库时,就可以自动使用这种角色了。为了增强安全性,可以默认地禁用一个角色;在这种情况下,当用户连接到数据库上时,必须启用盖角色,若有密码,必须输入密码;

connect sys/admin as sysdba
--默认禁用read
alter user user1 default role all except read;
--清空角色
set role none;
--设置角色可以参考创建角色的内容;


撤销角色

connect user1/admin
revoke read from user2;


从角色中撤销特权

revoke all on table_name from user2;


删除角色

drop role read;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 11g oracle