Oracle 学习笔记7 —— 权限管理2
2013-05-19 15:35
465 查看
1、对象权限的分类
根据不同的对象类型,Oracle数据库设置了多种类型的对象权限。
2、授予对象权限
oracle dba和对象权限有该对象的拥有者可以为其他用户授权,非对象的拥有者不能向其他用户授予对象权限。
其中,object_priv 是对象权限,column_list用于标识权限所对应的列表,schema表示模式名,user表示被授权的用户,role表示被授权的角色。对象权限不仅可以授予用户、角色,也可以授予public。将对应权限授予public后,会使所有用户都具有该对象权限。授予对象权限时可以带with grant option选,被授权用户可以将对应权限转授给其他用户。
3、显示对象权限
授予对象权限时,Oracle会将对象权限的信息存放到数据字典中。下边列出与对象权限相关的数据字典视图。
DBA_TAB_PRIVS 显示所有用户或角色的对象权限信息
DBA_COL_PRIVS 显示所有用户或角色的列权限信息
ALL_COL_PRIVS_MADE 显示对象所有者或授权用户授出的所有列权限
ALL_COL_PRIVS_RECD 显示用户或public组被授予的列权限
ALL_TAB_PRIVS_MADE 显示对象所有者或授权用户授出的所有对象权限
ALL_TAB_PRIVS_RECD 显示用户或public组被授予的对象权限
下边的语句将查询DBA_TAB_PRIVS显示用户被授予的所有对象权限。
4、收回对象权限
和系统权限相似,收回对象权限是由对象的所有者完成的。如果以其他用户收回对象权限,则要求该用户必须是权限授予者。收回对象权限的revoke语句的形式如下:
收回对象权限时需要注意,授权者只能从自己授权的用户那里收回对象权限。如果被授权用户基于一个对象权限创建了存储过程,视图,当收回对象权限以后,这些存储过程,视图将变为无效。
同样,收回对象权限,不会级联收回。
根据不同的对象类型,Oracle数据库设置了多种类型的对象权限。
alter | delete | execute | index | insert | read | reference | select | update | |
---|---|---|---|---|---|---|---|---|---|
directory | N | N | N | N | N | Y | N | N | N |
function | N | N | Y | N | N | N | N | N | N |
procedure | N | N | Y | N | N | N | N | N | N |
package | N | N | Y | N | N | N | N | N | N |
sequence | Y | N | N | N | N | N | N | Y | N |
table | Y | Y | N | Y | Y | N | Y | Y | Y |
view | N | Y | N | N | Y | N | N | Y | Y |
oracle dba和对象权限有该对象的拥有者可以为其他用户授权,非对象的拥有者不能向其他用户授予对象权限。
grant { object_priv [(column_list)][,object_priv[(column_list)]]... | all [privilege]} on [ schema.]object to { user | role | public} [, { user | role | public }] ... [with grant option]
其中,object_priv 是对象权限,column_list用于标识权限所对应的列表,schema表示模式名,user表示被授权的用户,role表示被授权的角色。对象权限不仅可以授予用户、角色,也可以授予public。将对应权限授予public后,会使所有用户都具有该对象权限。授予对象权限时可以带with grant option选,被授权用户可以将对应权限转授给其他用户。
需要注意的是,with grant option选项不能授予给角色。 grant select on scott.emp to USER_NAME; -- 授予scott模式,emp表的查询权限 grant update(sal) on scott.emp to USER_NAME; -- 授予scott模式,emp表sal字段的修改权限。
3、显示对象权限
授予对象权限时,Oracle会将对象权限的信息存放到数据字典中。下边列出与对象权限相关的数据字典视图。
DBA_TAB_PRIVS 显示所有用户或角色的对象权限信息
DBA_COL_PRIVS 显示所有用户或角色的列权限信息
ALL_COL_PRIVS_MADE 显示对象所有者或授权用户授出的所有列权限
ALL_COL_PRIVS_RECD 显示用户或public组被授予的列权限
ALL_TAB_PRIVS_MADE 显示对象所有者或授权用户授出的所有对象权限
ALL_TAB_PRIVS_RECD 显示用户或public组被授予的对象权限
下边的语句将查询DBA_TAB_PRIVS显示用户被授予的所有对象权限。
select grantor, owner || '.' || table_name object, privilege from DBA_TAB_PRIVS where grantee = 'USER_NAME';
4、收回对象权限
和系统权限相似,收回对象权限是由对象的所有者完成的。如果以其他用户收回对象权限,则要求该用户必须是权限授予者。收回对象权限的revoke语句的形式如下:
revoke { object_priv [, object_priv] ... | all [privileges]} on [ schema.]object from { user | role | public} [ cascade constrainsts];
收回对象权限时需要注意,授权者只能从自己授权的用户那里收回对象权限。如果被授权用户基于一个对象权限创建了存储过程,视图,当收回对象权限以后,这些存储过程,视图将变为无效。
revoke select on scott.emp from USER_NAME; -- 收回对象scott模式,emp表查询权限
同样,收回对象权限,不会级联收回。
相关文章推荐
- Oracle 学习笔记6 —— 权限管理1
- SQL Server与Oracle对比学习:权限管理(二) 一些有趣的比喻
- ORACLE用户权限管理笔记整理
- Linux学习笔记(4)Linux常用命令之权限管理命令
- 重新整理后的Oracle OAF学习笔记——2.OA Framework 精要之状态管理
- linux学习笔记:用户及权限管理
- Oracle笔记之权限管理
- [知了堂学习笔记]_EasyUi快速搭建一个权限管理的模块(1)--RBAC概述和数据库设计
- Mysql学习笔记(十三)权限管理
- Linux学习笔记二之权限管理命令
- 马哥学习笔记十七——MySQL之用户和权限管理
- laravel学习笔记------使用 Entrust 扩展包在 Laravel 5 中实现 RBAC 权限管理
- Oracle 学习笔记:管理表 ---摘自《Oracle10g 宝典》
- linux学习笔记-----其他文件权限管理命令
- Oracle学习之数据库管理(一)权限管理&表空间
- oracle 学习笔记,数据库创建及用户权限
- Oracle笔记之权限管理
- MySQL学习笔记二:权限管理
- oracle 学习笔记--用户管理
- SQL Server与Oracle对比学习:权限管理(二) 一些有趣的比喻