详细讲解Oracle数据库——系统权限与对象权限传递使用规则

本文介绍了Oracle数据库中的系统权限和对象权限的传递规则。通过实例展示了如何将系统权限如ALTER ANY TABLE从sys授予a,再由a授予b,以及对象权限如何创建、分配和撤销。讨论了当sys撤销授予a的权限后,b是否仍保留之前权限的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

大家好,我是今天的博主,<一个想做全栈的咸鱼> 今天跟大家一起学习一下Oracle数据库什么事系统权限与对象权限传递呢?

举个小例子:
系统权限
sys–a--b sys权限分别给了ab
对象权限
a-b-c a权限给了b,b有分配给了c的权限

  • 系统权限

先确认一下当前是哪个用户
show user;
在查看一下系统权限
select * from user_sys_privs;
如果想把sys授权给a
grant alter any table to a;
a窗口查询当前权限
select * from uset_sys_privs;
在把a的权限给b的话,就要在sys窗口在给a权限,让a带有管理权限
grant alter any table to a with admin option;
此时在a窗口查询当前权限
select * from user_sys_privs;
会发现ALTER ANY TABLE此时为YES状态,表示a已经接受到sys给的权限,可以再次将a的权限给于b;
grant alter any table to b;
此时就成功的将a权限给予b
在b窗口查询当前权限
select * from user_sys_privs;
b窗口现实,成功的接受到a的权限

如果想要在b分给其他表的权限:
在加上 grant alter any table to 表名 with admin
option;就可以授权给其他表

  • 对象权限
  • 对象权限就是谁创建谁授予给其他表权限

创建一个表
create table A(id int);
grant select On A to a;
在a窗口查询当前权限
select * from user_sys_privs;
在sys设置让a带着授权选项
grant select On A to a with grant option;
此时在a窗口,a表就可以吧权限分给其他表
grant select On sys.A to b;

如果想要把A的权限在分配给其他权限就要加
grant select On A to b with grant option;
b就可以把A权限分配给其他

思考问题:sys权限分配给了a,a又分配给了b
如果sys把给予a的权限撤销后,b还有之前的权限吗?
在这里插入图片描述
希望可以帮助到大家,我们下次再见,我还是那个咸鱼!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值