APPLY_PRIVILEGES函数用于在专家权限模型下,将源表给用户授予的权限复制到目标表,目标表保持与源表一致的权限。本文为您介绍在Hologres中APPLY_PRIVILEGES函数的用法。

使用场景

专家权限模型下,当使用CREATE TABLE LIKEINSERT OVERWRITE 、自动分区等创建新表时,新表的权限还需要重新再授予给用户,通过APPLY_PRIVILEGES函数可以复制源表的所有用户权限至新表,简化授权操作。

使用限制

  • 仅Hologres V1.1.48及以上版本支持APPLY_PRIVILEGES函数,如果您的实例是V1.1.48以下版本,请您提交工单或加入在线支持钉钉群申请升级实例。
  • 需要数据库开启专家权限模型,如果您开启的是SPM或者SLPM请转换为专家权限模型,详情请参见权限模型转换
  • 调用函数需要具有目标表的GRANT、REVOKE权限。
  • APPLY_PRIVILEGES的目标表是分区表时,只对父表复制权限,不影响子表访问控制权限。

命令语法

-- 将源表的权限复制给目标表,并且不回收目标表的权限,即不删除目标表之前具有的权限规则
CALL apply_privileges('<old_table>','<new_table>', false);


-- 将源表的权限复制给目标表,并且回收目标表的权限,即删除目标表之前具有的权限规则
CALL apply_privileges('<old_table>','<new_table>');
参数说明如下表所示。
参数 说明
old_table 源表名称,即被复制权限的表名称。
new_table 目标表名称,即获得权限的表名称。

使用示例

使用APPLY_PRIVILEGES函数进行复制权限操作的示例如下。

-- 将test_table1 ACL授权信息、owner信息应用到test_table2上, false代表不对test_table2之前具有的权限规则进行删除
CALL apply_privileges('test_table1','test_table2', false);

-- 将test_table1 ACL授权信息、owner信息应用到test_table2上,对test_table2之前具有的权限规则进行删除,保持两表的权限完全一致
CALL apply_privileges('test_table1','test_table2');