schema、权限和角色

一。模式schema是一个命名的对象集合。

如表、视图、序列号。用户被创建时对应的模式创建。

一个用户只能与一个模式相关。

模式由数据库用户所拥有并与用户名字相同。实际使用中模式和用户是一回事

只有DBA用户可以创建用户。



二、权限详解

权限是指执行特定类型sql命令或是访问其它方案对象的权利,包括系统权限和对象权限两种。
1.系统权限介绍

  系统权限是指执行特定类型sql命令的权利。它用于控制用户可以执行的一个或是一组数据库操作。比如当用户具有create table权限时,可以在其方案中建表,当用户具有create anytable权限时,可以在任何方案中建表。oracle提供了100多种系统权限。
常用的有: 
create session   连接数据库         createtable            建表
create view      建视图            createpublic synonym   建同义词 
create procedure 建过程、函数、包   createtrigger          建触发器 
create cluster 建簇 
 
2.显示系统权限
oracle提供了100多种系统权限,而且oracle的版本越高,提供的系统权限就越多,我们可以查询数据字典视图system_privilege_map,可以显示所有系统权限。
select * from system_privilege_map order by name; 

授予系统权限

 一般情况,授予系统权限是由dba完成的,如果用其他用户来授予系统权限,则要求该用户必须具有grant anyprivilege的系统权限。在授予系统权限时,可以带有with admin option选项,这样,被授予权限的用户或是角色还可以将该系统权限授予其它的用户或是角色。

3.回收系统权限---系统权限不是级联回收

  一般情况下,回收系统权限是dba来完成的,如果其它的用户来回收系统权限,要求该用户必须具有相应系统权限及转授系统权限的选项(with admin option)。回收系统权限使用revoke来完成。 当回收了系统权限后,用户就不能执行相应的操作了,但是请注意,系统权限不是级联回收

假如a将系统权限授予b,b将此权限授予c,当a从b处收回系统权限时,不会收回c的系统权限。

假如a将对象权限授予b,b将此权限授予c,当a从b处收回对象权限时,同时收回c的对象权限。

假如a将角色授予b,b将此角色授予c,当a从b处收回该角色时,不会收回c的角色(包括角色中的对象权限和系统权限)。


4.对象权限介绍

指访问其它方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。

比如smith用户要访问scott.emp表(scott:方案,emp:表)

常用的有:alter 修改 delete 删除  select 查询 insert 添加 update 修改 index 索引  references 引用 execute 执行

5.显示对象权限

通过数据字段视图可以显示用户或是角色所具有的对象权限。视图为dba_tab_privs

SQL> conn system/manager;

SQL> select distinct privilege from dba_tab_privs;

SQL> select grantor, owner, table_name, privilege fromdba_tab_privs where grantee = 'BLAKE';

6.授予对象权限

从oracle9i开始,dba用户(sys,system)可以将任何对象上的对象权限授予其它用户。授予对象权限是用grant命令来完成的。

 对象权限可以授予用户、角色和public。在授予权限时,如果带有with grant option选项,则可以将该权限转授给其它用户。注意with grant option选项不能被授予角色

收回对象的权限可以由对象的所有者来完成,也可以用dba用户(sys,system)来完成。收回对象权限后,用户就不能执行相应的sql命令,但是要注意的是对象的权限是级联回收。


三、角色是一组命名的相关权限,这组权限可以通过角色名字授予用户或其它角色。

角色可以包括系统权限和对象权限,角色在系统中是唯一的,不重名。角色不属于任何用户,也不存在任何用户模式中,角色的描述存放在数据字典中。--方便权限管理

系统有一些预定的角色,如dba,connect,resource等。也可以自定义角色。

给角色授权

给角色授予权限和给用户授权类似,但是要注意,系统权限的unlimited tablespace和对象权限的with grant option选项是不能授予角色的。

SQL> conn system/manager;

SQL> grant create session to 角色名 with admin option

SQL> conn scott/tiger@myoral;

SQL> grant select on scott.emp to 角色名;

SQL> grant insert, update, delete onscott.emp to 角色名; 
删除角色

使用drop role,一般是dba来执行,如果其它用户则要求该用户具有drop any role系统权限。

如果角色被删除,那么被授予角色的用户不具备原角色里的权限

SQL> conn system/manager;

SQL> drop role 角色名;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值