我在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告诉我用户没有创建会话权限。我哪里错了?我是否必须直接将此权限分配给用户而不是通过角色?