无法向用户授予角色

时间:2018-08-03 17:41:06

标签: sql oracle oracle12c

我有一个表EMPLOYEES,我希望授予该表一个名为MANAGER的角色的访问权限。该角色将授予名为judy的用户。设置代码如下

(以系统身份登录)

end = flow.End(
    task_title=_('End'),
    task_description=_('End'), 
    success_url=reverse('my-details-page', args=(A('process.object.pk'),)), 
)

但是,当我以judy身份登录时,无法从EMPLOYEES表中选择作为MANAGER:

(以Judy登录)

SQL> alter session set "_ORACLE_SCRIPT"=true;

Session altered.

SQL> create user judy identified by bob;

User created.

SQL> grant create session to judy;

Grant succeeded.

SQL> create role manager;

Role created.

SQL> grant select on employees to manager;

Grant succeeded.

SQL> alter role manager identified by manager_password;

Role altered.

SQL> grant manager to judy;

Grant succeeded.

为什么朱迪无法访问雇员表?

编辑:

以judy身份登录时,发出以下命令可解决此问题:

SQL> select * from system.employees;
select * from system.employees
                     *
ERROR at line 1:
ORA-00942: table or view does not exist

2 个答案:

答案 0 :(得分:3)

尝试通过以下方式启用Judy会话中的角色:

SET ROLE manager
         IDENTIFIED BY manager_password;

优先访问system.employees

或在授予角色后将角色manager设置为朱迪的默认角色。

ALTER USER judy
           DEFAULT ROLE manager;

或者也许

ALTER USER judy
           DEFAULT ROLE ALL;

将授予Judy的所有角色设为默认。

答案 1 :(得分:1)

还尝试授予resource

SQL> grant resource to judy;

P.S。不要将system用户用于测试,甚至不用于生产目的,而仅用于管理。