oracle新建用户有dba权限却sysdba方式登陆失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle新建用户有dba权限却sysdba方式登陆失败相关的知识,希望对你有一定的参考价值。

参考技术A dba权限和sysdba权限是两个权限,一般来说二者并不通用。也就是说:“有DBA权限不一定有sysdba权限,有sysdba权限不一定有DBA权限。”
不过一般在应用时,拥有sysdba权限的用户只有一个,而这个用户一般也拥有dba权限,这个用户就是数据库中权限最大的用户sys,所以一般都认为拥有sysdba权限的用户都会有dba的权限,其实二者并不完全一样。
至于dba权限和sysdba权限并不相同,所以就算授予了新用户dba权限,但是新用户是没有sysdba权限的。
比如sysdba权限有启停数据库的权限(默认是有的,虽然这个权限属于sysoper),但是这个权限在dba权限中是没有的。
不过sysdba并不能随便授予,只能通过sys授予。

Oracle - 授予非 dba 用户权限以在另一个用户对象上创建授权

【中文标题】Oracle - 授予非 dba 用户权限以在另一个用户对象上创建授权【英文标题】:Oracle - grant non-dba user rigths to create grants on another user objects 【发布时间】:2014-11-04 11:40:28 【问题描述】:

是否有可能授予 Oracle 数据库上的普通用户访问另一个模式中的表的权限?由于我们公司的安全政策,我不能简单地授予该用户 dba 或 sysdba 权限,因为我可以找到很多这样的解决方案。我的目标是使用只有管理员知道的凭据创建特殊帐户,这些管理员可以执行某些 dba 操作并且不能提升常规用户权限。

我需要类似的东西:

我们有 user1、user2 和 user3 我们授予 user1 一些特殊权限 现在我们可以作为 user1 执行:将 user2.table1 上的选择授予 user3

关于如何实现它的任何想法?

【问题讨论】:

【参考方案1】:

GRANT documentation 中,您可以选择使用限定符WITH GRANT OPTION

指定 WITH GRANT OPTION 以使被授权者能够将对象权限授予其他用户和角色。

即如果 USER1 将 SELECT 授权给 USER2,并且您希望 USER2 能够将该授权传播给 USER3,您将在以 USER1 身份连接时使用以下内容

grant select on user1.table to user2 with grant option

您可以在以 USER2 身份连接时执行以下操作

grant select on user1.table to user3

【讨论】:

Ben,感谢您的回答,但这不完全是我的情况,请注意。我希望有一个帐户来执行所有任务,我不想切换到其他帐户。 @RLapinski 给出的答案是正确的。您想要一个超级用户而不授予超级用户能力。如果这是可能的,它将违反数据库中内置的每个安全约束。你在上面看到的其实很常见。 实际上我已经设法用不同的方法解决了我的问题,而无需特殊帐户。但如果你这么说,我会接受解决方案:) 我没有这么说@RLapinski,如果你有不同的答案,为什么不发布它以便其他人将来可以学习? 明白。我刚刚从我的示例中消除了对 user1 的需求,我只与 user2 一起执行授权。

以上是关于oracle新建用户有dba权限却sysdba方式登陆失败的主要内容,如果未能解决你的问题,请参考以下文章

Oracle用户为啥都可以以sysdba身份登录

Oracle数据库中system和sys有啥区别啊?

windows10下“sqlplus / as sysdba”执行提示无权限解决办法

求Java 连接Oracle数据库有哪几种方式

Oracle - 授予非 dba 用户权限以在另一个用户对象上创建授权

oracle 数据库创建新用户