Oracle 11g学习笔记--角色

来源:互联网 发布:php 电商系统 编辑:程序博客网 时间:2024/06/07 01:00

Oracle 11g学习笔记–角色

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

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

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

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

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

●可以为角色设置密码;

创建角色

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

为角色授权

grant select, insert on user1.friends to read;

将角色授予用户

grant read to user2;

检查授予用户的角色

通过查询user_role_privs可以检查已经授予一个用户哪些角色,
部分列的定义如下

列 类型 说明 username varchar2(20) 该角色所授予的用户名 granted_role varchar(30) 授予该角色的角色名 admin_option varchar2(3) 该角色是否可以将该角色授予其他用户或角色 default_role varchar2(3) 当用户登录到数据库上是,是否默认启用该角色 os_granted varchar2(3) 该角色是否有操作系统授予

检查授予角色的系统特权

通过查询role_sys_privs可以检查已经授予一个角色哪些系统特权。
部分的定义如下:

列 类型 说明 role varchar2(30) 角色名 privilege varchar2(40) 授予该角色的系统特权 admin_option varchar2(3) 授予该特权时是否使用了with admin option选项

检查授予角色的对象特权

通过查询role_tab_privs可以检查已经授予一个角色哪些对象特权。
部分列的定义如下:

列 类型 说明 role varchar2(30) 该特权所授予的用户 owner varchar2(30) 拥有该角色对象的用户 table_name varchar2(30) 所授予的特权所操作的对象名 column_name varchar(30) 列名(如果适用) privilege varchar2(40) 对该对象的特权 grantable varchar2(3) 授予该特权时是否使用with grant option选项

默认角色

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

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

撤销角色

connect user1/adminrevoke read from user2;

从角色中撤销特权

revoke all on table_name from user2;

删除角色

drop role read;
0 0
原创粉丝点击