我对 SQL Oracle Developer 中的权限和特权感到困惑。创建的用户可以访问所有 schema/user 的表。我想限制数据库中的特定用户只能访问(ALTER、DROP、UPDATE 等)他自己的表。谁能指定我如何执行此任务。
我的意思是从系统权限中选择哪些权限,以便用户只能访问他自己的表。谢谢
我对 SQL Oracle Developer 中的权限和特权感到困惑。创建的用户可以访问所有 schema/user 的表。我想限制数据库中的特定用户只能访问(ALTER、DROP、UPDATE 等)他自己的表。谁能指定我如何执行此任务。
我的意思是从系统权限中选择哪些权限,以便用户只能访问他自己的表。谢谢
如果满足以下条件,用户将仅对其架构之外的表具有权限
如果用户已被授予系统级权限(即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>>)