找回密码
 立即注册
首页 业界区 安全 ORA-01720 错误及解决方法

ORA-01720 错误及解决方法

万妙音 昨天 13:01
ORA-01720 错误表示在 Oracle 数据库中尝试授权时,缺少必要的 grant option 权限。这通常发生在用户试图将权限传递给其他用户时,但自身并未被授予传递权限。
示例,假设以下场景:

  • 用户 A 创建了视图 V_A,其中视图中用了C用户T_C表。
  • 用户 B 使用视图 表V_A 。
  • 用户 B 尝试将 V_B 的查询权限授予用户 C。
执行以下命令时会报错:
-- 基于1,我们要将用户C的表 T_C 授权给用户 AGRANT SELECT ON T_C TO C; -- 基于2,我们要将用户A的视图表 V_A 授权给用户 BGRANT SELECT ON V_A TO B; -- 那么在用户 B 下使用视图表 V_A ,会出现ORA-01720报错,即使将用户C的表 T_C 授权给用户 C,依然无法解决该问题GRANT SELECT ON T_C TO B; -- 报错:ORA-01720: grant option does not exist for 'V_A' 
解决方法:
1. 使用 WITH GRANT OPTION
在用户 C 授权给用户 A 时,添加 WITH GRANT OPTION,允许用户 A 将权限传递给其他用户。
-- 用户 A 授权给用户 B,并允许传递权限GRANT SELECT ON T_C TO A WITH GRANT OPTION;
-- 用户 A 再次授权给用户 BGRANT SELECT ON V_A TO B;此时,用户 B 可以正常访问视图 V_A。
2. 权限链分析
确保所有涉及的对象(如表或视图)都已正确授权。如果用户 A 的视图依赖于多个对象,则每个对象都需要添加 WITH GRANT OPTION。
注意事项

  • 谨慎使用:WITH GRANT OPTION 会赋予被授权者较大的权限,需确保其安全性。
  • 如果需要进一步授权(如用户 B 授权给其他用户),需重复上述步骤。
通过以上方法,可以有效解决 ORA-01720 错误并完成权限传递。
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册