Oracle CREATE USER 权限

Oracle CREATE USER privilege

晚上好!

问题是 - 我授予某些用户创建、更改和删除用户的权限(创建用户、更改用户、删除用户)但是当我尝试使用该用户创建用户时,它说该用户没有足够的权限特权。应该怎么做才能解决这个问题?

提前谢谢大家!

编辑:我使用 Oracle Database 18c 快捷版

编辑2: 用户创建:

SQL> CREATE USER predefined
  2  IDENTIFIED BY pf
  3  DEFAULT TABLESPACE USERS
  4  QUOTA 50M ON USERS
  5  TEMPORARY TABLESPACE TEMP;

User created.

SQL> GRANT CREATE SESSION TO predefined;

Grant succeeded.

SQL> GRANT CREATE ANY TABLE, CREATE ANY SEQUENCE, CREATE ANY VIEW, CREATE ANY PROCEDURE, CREATE ANY INDEX, CREATE ANY TRIGGER TO predefined

Grant succeeded.

SQL> GRANT CREATE USER TO predefined;

Grant succeeded.

SQL> GRANT ALTER USER TO predefined;

Grant succeeded.

SQL> GRANT DROP USER TO predefined;

Grant succeeded.

当我尝试用该用户创建用户时,我得到了这个:

SQL> CREATE USER predefined2
  2  IDENTIFIED BY pf2
  3  DEFAULT TABLESPACE USERS
  4  QUOTA 5M ON USERS
  5  TEMPORARY TABLESPACE TEMP;
CREATE USER predefined2
*
ERROR at line 1:
ORA-01031: insufficient privileges

另一件事 - 我检查了 USER_SYS_PRIVS table,它向我显示了这个:

USERNAME                                                                                                                         PRIVILEGE                                ADM COM INH
-------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------- --- --- ---
PREDEFINED                                                                                                                         ALTER USER                               NO  NO  NO
PREDEFINED                                                                                                                         CREATE USER                              NO  NO  NO
PREDEFINED                                                                                                                         DROP USER                                NO  NO  NO
PREDEFINED                                                                                                                         CREATE ANY VIEW                          NO  YES NO
PREDEFINED                                                                                                                         CREATE ANY PROCEDURE                     NO  YES NO
PREDEFINED                                                                                                                         CREATE ANY SEQUENCE                      NO  YES NO
PREDEFINED                                                                                                                         CREATE SESSION                           NO  YES NO
PREDEFINED                                                                                                                         CREATE ANY TRIGGER                       NO  YES NO
PREDEFINED                                                                                                                         CREATE ANY INDEX                         NO  YES NO
PREDEFINED                                                                                                                         CREATE ANY TABLE                         NO  YES NO

我注意到,在 COM 列中,它没有创建用户、更改用户和删除用户权限。所以也许它必须对此做些什么?

嗯,你不应该有那个问题。至少我没有。

作为 SYS,我正在创建一个将被授予 CREATE USER 权限的全新用户:

SQL> show user
USER is "SYS"
SQL> create user predefined identified by pf;

User created.

SQL> grant create session, create user to predefined;

Grant succeeded.

那么,它有效吗?

SQL> connect predefined/pf
Connected.
SQL> create user test identified by test;

User created.

SQL>

是的,确实如此。


请编辑问题和post你到底做了什么(就像我一样)以便我们可以看到它。

所以问题是 - 我在授予权限时没有添加 CONTAINTER=ALL 子句。

所以 GRANT 子句应该是这样的 GRANT CREATE USER TO predefined CONTAINTER=ALL;

之后,创建新用户成功。

编辑: 在做了一些研究之后,我发现那些是系统权限,所以如果你想将它们从系统用户授予另一个用户,你必须在 grant 子句的末尾添加 CONTAINER = ALL 子句。 如果我错了,请纠正我,但我希望这对将来的人也有帮助! :)