我对 SQL Oracle Developer 中的权限和特权感到困惑。创建的用户可以访问所有模式/用户的表。我想限制数据库中的特定用户只能访问(ALTER、DROP、UPDATE 等)他自己的表。任何人都可以指定我如何执行此任务。
我的意思是从系统权限中选择哪些权限让用户只能访问自己的表。谢谢
最佳答案
用户只有在满足以下条件时才拥有对其架构之外的表的权限
- 每个表的对象级权限已授予用户(直接或通过角色),或者
- 系统级权限已授予用户(直接或通过角色),允许他们访问特定类型的所有对象。
如果用户已被授予系统级权限(即SELECT ANY TABLE
),您可以撤销系统级权限。如果用户已被授予对每个表的显式权限,则您需要撤销对每个表的权限。
我的猜测是,用户已被授予包含一个或多个ANY
系统权限的角色(可能是DBA
角色)。如果是这种情况,您需要撤销用户的角色或撤销角色的权限。
授予用户哪些角色?
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>>)
关于database - 限制用户只能访问 Oracle SQL Developer 中自己的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476847/