授予在 OracleDBMS 中的角色创建权限



我想创建一个角色,该角色仅具有创建表名emp和更新emp表的权限。我发现一些网页说这是不可能的。(据我了解) 我也尝试以下代码。

GRANT CREATE ON emp TO C##HR;

但这行不通。它将触发以下消息。

Do not attempt to grant or revoke EXECUTE privilege on tables.

有没有办法做到上述情况。?还是不可能?

注意:- 我正在使用 ORACLED DBMS 12c

我不太确定我是否完全理解您要完成的任务。

您可以授予用户(或角色)CREATE TABLE权限。 这允许他们在自己的架构中创建他们想要的任何表。 您不能授予用户创建表的能力,但限制他们可以创建的表的名称。 我想如果你想变得非常棘手,你可以授予他们CREATE TABLE权限,但随后创建一个 DDL 触发器,阻止他们创建未命名的表EMP . 这是可能的,但这是一个糟糕的架构 - 一方面授予权限,另一方面部分限制它们,这使得很难理解用户实际拥有哪些权限。

如果用户拥有表,则该用户将始终有权INSERTUPDATEDELETE该表中的数据,以及运行 DDL(如 TRUNCATEDROP)。 即使您设法将用户限制为只能创建名为 EMP 的表,该用户也将对该表拥有完全控制权。

现在,您始终可以选择将所需的任何内容包装在由特权更高的用户(即 DBA)拥有的存储过程中,并为用户提供执行该存储过程的能力。 例如,DBA 用户可以创建一个过程,该过程接受 CREATE TABLE 语句,在调用方拥有的模式以外的模式中创建表,然后授予用户对此表UPDATE特权。 然后,您可以向用户(或角色)授予此过程EXECUTE权限。 当然,我很难理解你为什么要做这样的事情。 但你可以。

相关内容

  • 没有找到相关文章

最新更新