刚学到Oracle数据库权限传递,问一个权限传递收回的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刚学到Oracle数据库权限传递,问一个权限传递收回的问题相关的知识,希望对你有一定的参考价值。

发现权限收回只有谁授予的,谁才能收回。意思是scott授予的,用sytme去收回发现收不了,一定要用scott。

那么我想问
1、假如A用户有表1,然后A用户授予B用户修改表1的权限并且授予权限传递,然后B用户又授予C用户修改表1的权限并且又授予权限传递,到最后可能传到N用户。

2、然后A用户发现N用户乱改数据,这时想收回这个权限,却发现A用户自己并没有给N用户授过这个权,那么是收不回的。
这个时候该怎么办?用什么办法收回?

当我们在回收权限的时候,我们要分清楚回收的是系统权限还是对象权限,这两者在回收的时候不一样的。系统权限的回收时,经过传递获得权限的用户不受影响,如:用户A把系统权限a授予用户B,用户B又把系统权限a授予用户C,用户C又把系统权限a授予用户D,那么删除用户B或回收用户B的系统权限a,不会影响C和D对系统权限a的使用。对象权限回收时,经过传递获得权限的用户会受影响,如:用户A把对象权限a授予用户B,用户B又把对象权限a授予用户C,用户C又把对象权限a授予用户D,那么删除用户B或回收用户B的对象权限a后,用户C和D将不能使用对象权限a,并且与对象权限a所对应的对象也将无效。从你的问题来看,对具体表(表1)的修改操作是对象权限,所以要想回收用户N对表1的修改操作权限,有两种方式:1.直接回收用户A所授予的下一级用户的对象权限,但这样会影响后续所有的权限传递的用户或角色。2.使用授予用户N此对象权限的用户登录,再回收用户N的对象权限,这样不会影响前边的权限传递。这是我的理解。 参考技术A 直接回收对B用户授予的权限,会一并收回其传递的权限。本回答被提问者采纳

如何在 Oracle 中为所有用户和权限生成 DDL

【中文标题】如何在 Oracle 中为所有用户和权限生成 DDL【英文标题】:How to generate DDL for all Users and privileges in Oracle 【发布时间】:2020-04-27 05:30:31 【问题描述】:

我正在尝试将数据库实例从 RDS Oracle 迁移到本地 Oracle。我对数据库脚本还是很陌生。我发现这个脚本可以为我通过 SQLDeveloper 传递的单个用户完成工作。但是,我的 RDS Oracle 实例上有 200 多个用户。

https://oracle-base.com/dba/script?category=script_creation&file=user_ddl.sql

我已尝试在此处删除用户名和 rownum 的变量,但这会产生很多重复的条目。有人可以指导我为所有用户实现上述脚本结果集的最佳方法是什么。

非常感谢!

【问题讨论】:

【参考方案1】:

我建议另一种方法(如果可以使用的话):数据泵。

你会执行导出

使用用户SYSTEMSYS,因为他们拥有数据库并可以导出... ...FULL数据库 内容是METADATA_ONLY(这样你就可以跳过数据;我知道你不需要那个)

应该是这样的

expdp system/pwd file=your_db.dmp full=y content=metadata_only

在目标数据库中导入也是如此。

【讨论】:

不确定它是否适用于 RDS Oracle。我正在弄清楚。感谢您的回复

以上是关于刚学到Oracle数据库权限传递,问一个权限传递收回的问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle 创建用户并且赋给,刚创建的用户管理员权限。

oracle权限

如何在 Oracle 中为所有用户和权限生成 DDL

Oracle权限设置

如何将权限传递给 Broadcastreceiver?

oracle public权限导致的权限扩散问题