繁体   English   中英

当我尝试连接时,为什么 Oracle 认为我的用户没有“创建会话”权限?

[英]Why doesn't Oracle think my user has the "Create Session" privilege when I try to connect?

我在我的 Oracle 11g 数据库中创建了一个名为TestUserRole的角色,该角色最终将拥有更多权限,但目前只有创建会话权限。 我已将该角色分配给用户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 告诉我该用户没有创建会话权限。 我哪里错了? 我是否必须直接将此权限分配给用户而不是通过角色?

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

在这里说:

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

那么问题就在于,当尚未启用登录角色时,用户必须使用此处指定的“ SET ROLE”语句来启用它但这只能在登录后完成。

  1. 将CREATE SESSION授予用户
  2. 转到用户>用户
  3. 在列表中选择用户
  4. 右键单击用户,然后选择“编辑用户”
  5. 在“服务器特权”选项卡下,选中“ CREATE SESSION
  6. 比点击保存

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM