Oracle中如何在不删除用户的前提下禁止其访问指定视图
Oracle禁止指定用户访问特定视图的方法
不需要删除non_admin用户,直接回收已授予的对象权限就能实现需求,这也是Oracle权限管理的标准操作。
你之前给non_admin单独授予了retailx.SKU_O_DETAILS视图的SELECT查询权限,要禁止该用户访问这个视图,用retailx schema所属账号,或者有DBA权限的管理员账号(比如SYS、SYSTEM)执行下面的SQL即可:
REVOKE SELECT ON retailx.SKU_O_DETAILS FROM non_admin;
执行完语句后,non_admin就失去了这个视图的查询权限,再尝试访问会直接报ORA-01031权限不足的错误,完全满足禁止访问的要求。
实操时注意几个点:
- 这个操作只会回收
non_admin对这一个视图的查询权限,不会影响用户的其他权限,也不会改动用户账号本身、用户自己创建的对象,完全不需要删用户。 - 如果你之前不是直接给用户授权,而是通过角色间接给
non_admin分配的视图查询权限,要么回收对应角色上的该视图权限,要么把non_admin从对应角色里移除就行,效果是一样的。 - 权限回收是即时生效的,不需要重启数据库,用户已经建立的连接也会立刻失去对应访问权限,不用等用户重连。
内容的提问来源于stack exchange,提问作者Havishka
相关产品推荐
相关产品推荐

