我在我的Oracle11g数据库中创建了一个名为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缺乏创建会话权限;登录被拒绝
我已经证实(我认为)用户和角色已经成功地设置好了。如果我质疑
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告诉我用户没有Create权限。我哪里出问题了?我是否必须将此权限直接分配给用户,而不是通过角色分配?
发布于 2014-04-10 17:54:15
您可以尝试在没有“由密码标识”子句的情况下创建您的角色吗?
Here声明如下:
BY password子句允许您创建本地角色,并指示用户在启用角色时必须为数据库指定密码。
然后问题是,当还没有启用角色登录时,用户必须使用"SET ROLE“语句作为指定的here来启用它,但这只能在登录之后才能完成。
https://stackoverflow.com/questions/22995386
复制相似问题