如何在Trino/Presto中查询指定用户被授予的所有角色
Trino/Presto 中查询用户已授予角色的等价写法
Hive 中查询指定用户全部被授予角色的语句为show role grant user <username>;,Trino/Presto 没有完全同名的语法,根据查询场景可以用以下方式实现:
- 查询当前登录用户自身的已授予角色
直接使用内置的SHOW命令即可,默认返回当前catalog下的角色授权:-- 查询当前catalog下当前用户的角色 SHOW ROLE GRANTS; -- 查询指定catalog(比如hive catalog)下当前用户的角色 SHOW ROLE GRANTS FROM hive; - 查询任意指定用户的已授予角色(和Hive原语句功能完全等价)
直接查询系统元数据表即可,该方式适配Trino 353及以上正式版本、主流Presto发行版:
返回字段含义:SELECT role_name, grantee, grantor, is_admin_option FROM system.metadata.role_authorization_descriptors WHERE grantee = '<待查询的用户名>' -- 若只需要查特定catalog下的角色授权,取消下面注释并指定catalog名 -- AND catalog_name = 'hive';role_name:授予用户的角色名称grantee:被授权的主体(用户/角色)grantor:执行该授权操作的主体is_admin_option:标识当前用户是否拥有该角色的转授权限
注意:查询系统元数据表需要账号拥有
system.metadata的访问权限,普通账号无权限时需要管理员先授予对应权限。
内容的提问来源于stack exchange,提问作者Dyno Fu
相关产品推荐
相关产品推荐

