我正在尝试使用SQL命令行在Oracle 11g数据库中创建角色,但我收到与权限不足相关的错误。具体来说,我试图授予"CREATE ANY role"。权限到用户帐户,但是我收到一个"ORA-00911:无效字符"。错误。
步骤:
- 在Oracle 11g上创建了一个新的数据库,用户名为"21f_9208"。
- 使用SQL命令行连接到数据库,并验证用户帐户可以查看数据库中的表。
- 尝试使用以下SQL命令创建新角色: 创建超级管理员
- 收到一个错误消息,指出用户没有足够的权限来创建角色。
- 试图授予"CREATE ANY role"使用以下SQL命令将权限授予用户帐户:
- 收到一个"ORA-00911:无效字符";错误消息。
聊天GPT的潜在解决方案,但我是初学者,所以没有帮助我:
- 验证用户帐户具有创建角色和授予特权所需的权限。这可能涉及使用SQL命令行或Oracle企业管理器检查用户的角色和特权。
- 检查SQL命令的语法,确保它们格式正确,不包含任何拼写错误或错误。
- 联系Oracle支持以帮助解决问题,特别是如果用户没有必要的权限来执行所需的任务。
只是想给我的oracle 11g数据库21F_9208权限,这样我就可以执行下面的语句来完成我的赋值:赋予superadmin权限SELECT, INSERT, UPDATE, DELETE;
这个角色需要被授予权限来对admin表执行以下操作
只有特权用户(例如SYS
,除非您创建了自己的用户)可以创建新用户。
意味着SYS
首先必须
grant create role to "21F_9208";
(顺便说一下,这是选择不当的用户名);你为什么要这样设置?现在您必须每次使用双引号限定它,因为它的名称以数字开头。这就是你得到的错误原因:"ORA-00911: invalid character
")。
该用户("21F_9208"
) -显然-拥有名为admin
的表,因为您想将DML权限(select, insert,…)授予新创建的角色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>