在实时数仓Hologres中CALL set_table_property对用户的权限是没要求的吗

阿里云服务器

在实时数仓Hologres中,对于CALL set_table_property这一操作的权限要求,并非没有要求,而是取决于执行该操作的用户在数据库中的角色和权限。

首先,Hologres兼容Postgres,并在权限系统上提供了两种模式:专家权限模型(与Postgres完全一致的权限系统)和简单权限模型(SPM)。在专家权限模型中,权限的划分非常严格,不同的角色和用户需要执行不同的授权语句来获得相应的权限。而在简单权限模型中,Hologres以数据库(DB)为维度,划分了管理员(admin)、开发者(developer)、读写者(writer)以及分析师(viewer)四种角色,每种角色对应不同的权限集合。

对于CALL set_table_property这一具体操作,它通常用于设置表的额外物理存储属性,如表的存储类型、聚簇索引、分段键等。这些操作涉及到对表结构的修改,因此通常需要较高的权限。

在专家权限模型中:

用户需要具有对特定表或数据库的ALTER权限,或者更高级别的权限(如SUPERUSER),才能执行CALL set_table_property。

权限的授予和管理需要精确到每个用户或角色,并执行相应的授权语句。

在简单权限模型中:

通常情况下,只有DB管理员(admin)角色会拥有足够的权限来执行CALL set_table_property。因为该操作涉及到对表结构的修改,而DB管理员是拥有最高权限的角色,包括了对所有Schema和对象的增删改查权限,以及修改DB配置项的能力。

其他角色(如developer、writer、viewer)则可能没有足够的权限来执行这一操作,除非他们被明确授予了相应的ALTER权限。

需要注意的是,无论是专家权限模型还是简单权限模型,Hologres都提供了灵活的权限管理机制。管理员可以根据实际需求,通过执行授权语句或使用简单权限模型的权限管理函数,来为用户或角色分配相应的权限。

因此,对于CALL set_table_property这一操作的权限要求,并不是没有要求,而是取决于执行该操作的用户在数据库中的角色和权限。在大多数情况下,只有具有足够权限的用户(如DB管理员)才能执行这一操作。