【问题标题】:Why doesn't Oracle think my user has the "Create Session" privilege when I try to connect?为什么 Oracle 在我尝试连接时不认为我的用户具有“创建会话”权限?
【发布时间】:2014-05-24 14:14:36
【问题描述】:

我在我的 Oracle 11g 数据库中创建了一个名为 TestUserRole 的角色,该角色最终将拥有更多权限,但目前只有 Create Session 权限。我已将该角色分配给用户 TestUser。这是他们唯一的角色。

我是这样创建的:

CREATE ROLE TestUserRole IDENTIFIED BY somepassword;
GRANT Create Session TO TestUserRole;
CREATE USER TestUser IDENTIFIED BY somepassword;
GRANT TestUserRole TO TestUser;

当我尝试连接到数据库时,我收到:

ORA-01045: 用户 TESTUSER 缺少 CREATE SESSION 权限;登录被拒绝

我已经验证(我认为)用户和角色已成功设置。如果我查询

select * from dba_role_privs where grantee = 'TESTUSER'

我明白了

| Grantee  | Granted_Role | Admin_Option | Default_Role |
---------------------------------------------------------
| TESTUSER | TESTUSERROLE | NO           | YES          |

如果我查询

select * from role_sys_privs where role = 'TESTUSERROLE'

我明白了

| Role         | Privilege      | Admin_Option |
------------------------------------------------
| TESTUSERROLE | CREATE SESSION | NO           |

看来我已经成功创建了用户和角色,用户拥有角色,角色拥有创建会话权限。然而,当我尝试登录时,Oracle 告诉我用户没有创建会话权限。我哪里错了?我是否必须将此权限直接分配给用户而不是通过角色?

【问题讨论】:

    标签: oracle roles


    【解决方案1】:

    您可以尝试在没有“IDENTIFIED BY 密码”子句的情况下创建您的角色吗?

    Here 上面写着:

    BY 密码子句允许您创建本地角色,并指示用户在启用角色时必须指定数据库密码。

    那么问题是因为在角色登录还没有启用时,用户必须使用“SET ROLE”语句启用它,指定here但这只能在登录后进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多