限制用户在Oracle SQL Developer中仅访问自己的表

时间:2012-07-13 19:09:22

标签: database oracle11g privileges oracle-sqldeveloper database-permissions

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

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

1 个答案:

答案 0 :(得分: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>>)