首页 文章

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

提问于
浏览
2

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

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

1 回答

  • 4

    如果用户只对其架构之外的表拥有权限

    • 已将每个表的对象级权限授予用户(直接或通过角色),或

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

    如果已授予用户系统级权限(即 SELECT ANY TABLE ),则可以撤消系统级权限 . 如果已为每个表授予用户显式权限,则需要撤消每个表的权限 .

    我的猜测是,用户已被授予一个包含一个或多个 ANY 系统权限的角色(可能是 DBA 角色) . 如果's the case, you'd需要撤消用户的角色或撤消角色的权限 .

    授予用户哪些角色?

    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>>)
    

相关问题