2

我对 SQL Oracle Developer 中的权限和特权感到困惑。创建的用户可以访问所有 schema/user 的表。我想限制数据库中的特定用户只能访问(ALTER、DROP、UPDATE 等)他自己的表。谁能指定我如何执行此任务。

我的意思是从系统权限中选择哪些权限,以便用户只能访问他自己的表。谢谢

4

1 回答 1

4

如果满足以下条件,用户将仅对其架构之外的表具有权限

  • 每个表的对象级权限已授予用户(直接或通过角色),或
  • 系统级权限已授予用户(直接或通过角色),允许他们访问特定类型的所有对象。

如果用户已被授予系统级权限(即SELECT ANY TABLE),您可以撤销系统级权限。如果用户已被授予对每个表的显式权限,则您需要撤销对每个表的权限。

我的猜测是用户已被授予DBA包含一个或多个ANY系统权限的角色(可能是角色)。如果是这种情况,您需要撤销用户的角色或撤销角色的权限。

授予用户哪些角色?

SELECT granted_role
  FROM dba_role_privs
 WHERE grantee = <<the user name>>

授予用户哪些系统权限?

SELECT privilege
  FROM dba_sys_privs
 WHERE grantee = <<the user name>>

哪些系统权限被授予授予用户的角色?

SELECT *
  FROM dba_sys_privs
 WHERE grantee IN (SELECT granted_role
                     FROM dba_role_privs
                    WHERE grantee = <<the user name>>)
于 2012-07-13T20:49:03.843 回答