我在我的Oracle 11g數據庫中創建了一個名爲TestUserRole的角色,該角色最終擁有更多權限,但目前只有創建會話權限。我已將該角色分配給用戶,TestUser。這是他們唯一的角色。爲什麼Oracle在我嘗試連接時不認爲我的用戶具有「創建會話」特權?
我創造了這個如下:
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告訴我用戶沒有創建會話權限。我哪裏錯了?我是否必須將此特權直接分配給用戶而不是通過角色?