【问题标题】:How get list of databases for certain user如何获取特定用户的数据库列表
【发布时间】:2020-04-02 23:48:46
【问题描述】:
作为管理员,我想帮助用户在 Web UI 中选择数据库、架构、表。
我有 accountadmin 角色的帐户。需要通过用户登录获取所有可用的数据库、方案、表。例如,使用带有参数的“MASTER.INFORMATION_SCHEMA.DATABASES”视图。
'MASTER.INFORMATION_SCHEMA.DATABASES' 仅返回当前用户的数据库。需要有可能定义一个用户。
【问题讨论】:
标签:
snowflake-cloud-data-platform
【解决方案1】:
Snowflake 使用基于角色的访问权限,因此用户不会被授予直接访问数据库的权限,但他们的角色是。
要查看哪些角色可以访问哪些数据库,您可以从 Snowflake 数据库中获取此信息,如果您拥有 accountadmin 角色,您应该可以访问这些信息:
select
roles.privilege,
roles.name as database_name,
roles.grantee_name as role_name
from snowflake.account_usage.grants_to_roles roles
where roles.granted_on = 'DATABASE'
;
请注意,我认为此表仅显示已直接授予角色的权限,而没有显示通过其层次关系获得的权限。您可以编写一个更复杂的查询,通过对grants_to_roles 和grants_to_users 表使用递归查询来确定通过层次结构授予用户的权限。我觉得¯\_(ツ)_/¯