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

**

大家好,我是今天的博主,<一个想做全栈的咸鱼> 今天跟大家一起学习一下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还有之前的权限吗?
在这里插入图片描述
希望可以帮助到大家,我们下次再见,我还是那个咸鱼!

猜你喜欢

转载自blog.csdn.net/qq_43299421/article/details/84844429