无法在由oracle 11g提供支持的“运行SQL命令行”中授予角色权限

kx7yvsdv  于 2023-04-05  发布在  Oracle
关注(0)|答案(1)|浏览(142)

我尝试使用SQL命令行在Oracle 11 g数据库中创建角色,但收到与权限不足相关的错误。具体而言,我尝试向用户帐户授予“CREATE ANY ROLE”权限,但收到“ORA-00911:无效字符”错误。
采取的步骤:

  • 在Oracle 11 g上使用名为“21F_9208”的用户帐户创建了新数据库。
  • 已使用SQL命令行连接到数据库,并验证用户帐户是否可以查看数据库中的表。
  • 已尝试使用以下SQL命令创建新角色:
  • 创建角色超级管理员;
  • 收到一条错误消息,指出用户没有足够的权限创建角色。
  • 已尝试使用以下SQL命令向用户帐户授予“CREATE ANY ROLE”权限:
  • 授予创建任何角色到21F_9208;
  • 收到“ORA-00911:无效字符”错误消息。

聊天GPT的潜在解决方案,但我是初学者,所以没有帮助我:

  • 验证用户帐户是否具有创建角色和授予权限所需的权限。这可能涉及使用SQL命令行或Oracle Enterprise Manager检查用户的角色和权限。
  • 检查SQL命令的语法,确保它们的格式正确,并且不包含任何拼写错误或错误。
  • 请与Oracle支持部门联系,以获得解决问题的帮助,特别是在用户没有执行所需任务的必要权限时。

我只是想给我的oracle 11 g db2 1F_9208授予权限,这样我就可以执行以下语句来完成我的分配:向超级管理员授予SELECT、INSERT、UPDATE、DELETE权限;
这是一个需要被授予权限的角色,它可以在admin表上执行以下操作

t5fffqht

t5fffqht1#

只有特权用户(如SYS,除非您自己创建了)可以创建新用户。
这意味着SYS首先必须

grant create role to "21F_9208";

(by顺便说一句,这是选择不当的用户名;你为什么要这样设置它?现在你必须每次都用双引号来限定它,因为它的名字以数字开头。这就是你得到错误的原因:“ORA-00911: invalid character”)。
该用户("21F_9208")显然拥有名为admin的表,因为您希望将其DML权限(选择、插入...)授予新创建的角色superadmin
这里有一个演练。
创建新用户:

SQL> show user
USER is "SYS"
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS

SQL> create user "21F_9208" identified by demo
  2  default tablespace users
  3  quota unlimited on users
  4  temporary tablespace temp;

User created.

授予基本权限(只是为了使这个例子工作):

SQL> grant create session, create table, create role to "21F_9208";

Grant succeeded.

作为新创建的用户连接:

SQL> connect "21F_9208"/demo@pdb1
Connected.

创建表格:

SQL> create table admin (id number);

Table created.

创建角色:

SQL> create role superadmin;

Role created.

向角色授予权限:

SQL> grant select, insert, update, delete on admin to superadmin;

Grant succeeded.

SQL>

相关问题