首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Oracle不认为我的用户在尝试连接时拥有"Create“特权?

为什么Oracle不认为我的用户在尝试连接时拥有"Create“特权?
EN

Stack Overflow用户
提问于 2014-04-10 17:48:59
回答 1查看 19.9K关注 0票数 5

我在我的Oracle11g数据库中创建了一个名为TestUserRole的角色,它最终将拥有更多的权限,但目前只有创建会话特权。我已经将这个角色分配给了一个用户,TestUser。这是他们唯一的角色。

我创建它的方式如下:

代码语言:javascript
运行
复制
CREATE ROLE TestUserRole IDENTIFIED BY somepassword;
GRANT Create Session TO TestUserRole;
CREATE USER TestUser IDENTIFIED BY somepassword;
GRANT TestUserRole TO TestUser;

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

ORA-01045:用户TESTUSER缺乏创建会话权限;登录被拒绝

我已经证实(我认为)用户和角色已经成功地设置好了。如果我质疑

代码语言:javascript
运行
复制
select * from dba_role_privs where grantee = 'TESTUSER'

我得到了

代码语言:javascript
运行
复制
| Grantee  | Granted_Role | Admin_Option | Default_Role |
---------------------------------------------------------
| TESTUSER | TESTUSERROLE | NO           | YES          |

如果我质疑

代码语言:javascript
运行
复制
select * from role_sys_privs where role = 'TESTUSERROLE'

我得到了

代码语言:javascript
运行
复制
| Role         | Privilege      | Admin_Option |
------------------------------------------------
| TESTUSERROLE | CREATE SESSION | NO           |

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-10 17:54:15

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

Here声明如下:

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

然后问题是,当还没有启用角色登录时,用户必须使用"SET ROLE“语句作为指定的here来启用它,但这只能在登录之后才能完成。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22995386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档