我对SQL Oracle Developer中的权限和权限感到困惑。创建的用户可以访问所有架构/用户的表。我想限制数据库中的特定用户访问(ALTER,DROP,UPDATE等)只到他自己的表。任何人都可以指定我如何执行此任务。
我的意思是从用户只能访问自己的表的系统权限中选择哪些权限。谢谢
答案 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>>)