如何管理权限和角色,权限和角色的区别。
权限分为系统权限和对象权限。如果要执行某种特定的数据库操作,则必须为其授予系统权限;如果用户要访问其他方案的数据对象,则必须为其授予对象权限。
1、系统权限
(1)常用的系统权限:
create session 连接数据库
create table 建表
create view 建视图
create public synonym 建同义词
create procedure 建过程、函数、包
create trigger 建触发器
create cluster 建簇
(2)显示系统权限:
查询数据字典视图system_privilege_map显示所有的系统权限
select * from system_privilege_map order by name;
(3)授予系统权限
一般情况,授予系统权限是dba完成的,如果用其他用户来授予系统权限,则要求该用户必须具有grant any privilege的系统权限。在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将系统权限授予其他的用户或是角色
eg:
①创建两个用户ken,Tom,出事阶段他们都没有任何权限,如果登陆就会出现错误信息
create user ken identified by ken;
②给用户ken授权
grant create session,create table to ken with admin option;
(4)回收系统权限
一般情况下,回收系统权限是dba来完成的,如果其他用户来回收系统权限,要求该用户必须具有相应系统权限及转授系统权限选项(with admin option)。回收系统权限使用revoke来完成。
revoke create session from ken;
注意:系统权限不是级联回收
2、对象权限
指访问其它方案的数据对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。scott.emp(scott:方案,emp:表)
(1)常用的对象权限:
alter 修改表结构
delete 删除
select 查询
insert 添加
update 修改数据
index 索引
references 引用
execute 执行
(2)显示对象权限
通过数据字段视图可以显示用户或是角色所具有的对象权限,视图为dba_tab_privs
select distincet privilege from dba_tab_privs;
select grantor,owner,table_name,privilege from dba_tab_privs where grantee='BLAKE';
(3)授予对象权限
dba用户和对象所有者可以将对象权限授予其他用户。其中dba用户可以将任何对象上的对象权限授予其它用户。
对象权限可以授予用户,角色和public。在授予权限时,如果带有with grant option选项,则可以将该权限转授给其它用户。但是要注意with grant option选项不能被授予角色。
grant select(授予的权限) on emp(表) to monkey(被授予者);
grant all(所有的权限) on emp(表) to monkey(被授予者);
①授予列权限
eg:monkey用户只可以修改scott.emp表的sal字段
grant update(授予的权限) on emp(sal) -表(字段) to monkey(被授予者);
②授予alter权限
如果monkey用户要修改scott.emp表的结构,则必须授予alter对象权限
grant alter on emp to monkey
③授予execute权限
如果用户想要执行其它方案的包、过程、函数,则须有execute权限。
eg:为了让ken可以执行包dbms_transaction,可以授execute权限
grant execute on dbms_transaction to ken;
④授予index权限
如果想在别的方案的表上建立索引,则必须具有index对象权限
grant index on scott.emp to monkey;
⑤使用with grant option选项
该选项用于转授对象权限,但是该选项只能被授予用户,而不能授予角色
(4)回收对象权限
级联回收
可以由对象所有者完成,也可以由dba用户(sys,system)来完成
revoke select(权限名称) on emp(在哪个表上) from monkey(从谁那里回收);