oracle中权限和角色-笔记

oracle管理用户的机制(原理)--oracle中权限和角色
①oracle的权限:大致上可以分为2中权限
一是:系统权限:【包括166种】,是和数据库本身的管理相关的权限
如create session 是登陆权限,create table/index/view/sequence/trigger……
可以查询数据字典视图:system_privilege_map ,来显示所有系统权限:
select * from system_privilege_map order by name;

授予系统权限:一般情况下,授予系统权限是由DBA来完成的,如果由其他用户来授予系统权限,
则要求该用户必须具有grant any privilege 的系统权限,在授予系统权限的时候,可以带有

with admin option //with admin option表示可以把获得的权限向别的用户转发【回收也一样】 

选项,这样,被授予权限的的用户或是角色还可以把该系统权限授予其他的用户或者角色

【注意:】权限的回收不是级联回收


二是:对象权限【17种】是和用户操作数据对象相关的权限,如update/insert/delete/select/alter/index/references/execute
对象权限:指访问其他方案对象额权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限
查看oracle提供的所有对象权限(DBA用户可以查看)
select distinct privilege from dba_tab_privs;

授予对象权限:
grant 对象权限 on 方案.数据库对象 to 用户名[,角色名] [with grant option]
【注意:with grant option 不能授予角色】
如给ken授予select权限
grant select/update/insert/delete/all on scott.emp to ken
all表示select/update/insert/delete/
回收对象权限:
revoke select/update/insert/delete/all on scott.emp from ken
【注意:跟系统权限不一样的是,对象权限的回收是级联操作的】

②oracle的角色:【简化对权限的操作】
【创建每个用户,都去分配权限,很麻烦,所以把常用的权限集中起来,形成了现在的角色】

一是:预定义角色。把常用的权限集中起来,如DBA,CONNECT,RESOURCE【需要大写】 

可以通过:select * from dba_roles;来查询系统有多少种预定义角色
【注意:】如何查看某个角色具有什么样的权限?
select * from dba_sys_privs where grantee='DBA'  //DBA 一定是大写
grantee取值还可以是CONNECT,RESOURCE 等

【注意:】RESOURCE角色隐藏了unlimited tablespace 系统权限
【注意:】DBA角色不具备启动和关闭数据库的权限
可以使用sys/system 用户登录,用如下语句查看某个用户具有什么角色
select * from dba_role_privs where grantee = '用户名'
如:select * from dba_role_privs where grantee = 'SCOTT' //grantee 后面的取值是大写

二是:自定义.自己定义角色

oracle的设计者认为,系统中的33中角色还不能满足用户需求,就有了自定义角色
①建立角色【不验证】
如果角色是公用的角色,可以采用不验证的方式建立角色
create role 角色名 not identified;
②建立角色【数据库验证】
采用这样的方式时,角色名,口令存放在数据库中。当激活该角色,必须提供口令,
在建立这种角色时,需要为其提供口令
create role 角色名 identified by m123;
举例:假如有用户1,2,3为了让他们都拥有权限
(1)连接数据库
(2)在scott.emp 表上select insert update
使用自定义角色来完成
create role myrole not identified
给角色赋权限
grant create session to myrole
grant select on scott.emp to myrole
grant insert on scott.emp to myrole
grant update on scott.emp to myrole
//创建一个用户,把自定义角色myrole赋给xiaobai
create user xiaobai identified by m123;
grant myrole to xiaobai


//删除角色
drop role 角色名
角色总结:
①显示所有角色:select * from dba_roles;
②显示角色具有的系统权限:
select privilege,admin_option from role_sys_privs where role='角色名'  //角色名需要大写
③显示角色具有的对象权限:
select * from dba_tab_privs where grantee='角色名'  //角色名需要大写
④显示用户具有的角色,以及默认角色
select granted_role,default_role from dba_role_privs where grantee='用户名'; //角色名需要大写


oracle中的方案
方案:
是oracle管理数据对象的方式,当一个用户创建了任意一个数据对象后,DBMS就会创建一个与之
同名的一个方案,该用户创建的数据库对象会默认放在该方案下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值