APPLY_PRIVILEGES函数用于在专家权限模型下,将源表给用户授予的权限复制到目标表,目标表保持与源表一致的权限。本文为您介绍在Hologres中APPLY_PRIVILEGES函数的用法。
使用场景
专家权限模型下,当使用CREATE TABLE LIKE
、INSERT OVERWRITE
、自动分区等创建新表时,新表的权限还需要重新再授予给用户,通过APPLY_PRIVILEGES
函数可以复制源表的所有用户权限至新表,简化授权操作。
使用限制
仅Hologres V1.1.48及以上版本支持
APPLY_PRIVILEGES
函数,如果您的实例是V1.1.48以下版本,请您使用自助升级或加入Hologres钉钉交流群反馈,详情请参见如何获取更多的在线支持?。需要数据库开启专家权限模型,如果您开启的是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');
文档内容是否对您有帮助?