Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snowflake cloud data platform 如何获取特定用户的数据库列表_Snowflake Cloud Data Platform - Fatal编程技术网

Snowflake cloud data platform 如何获取特定用户的数据库列表

Snowflake cloud data platform 如何获取特定用户的数据库列表,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,作为管理员,我想帮助用户在web UI中选择数据库、模式和表。 我拥有accountadmin角色的帐户。需要通过用户登录获取所有可用的数据库、方案、表。例如,使用带有参数的“MASTER.INFORMATION\u SCHEMA.DATABASES”视图。 “MASTER.INFORMATION\u SCHEMA.DATABASES”仅返回当前用户的数据库。需要能够定义用户。Snowflake使用基于角色的访问,因此用户不被授予直接访问数据库的权限,但他们的角色是 要查看哪些角色可以访问哪些数

作为管理员,我想帮助用户在web UI中选择数据库、模式和表。 我拥有accountadmin角色的帐户。需要通过用户登录获取所有可用的数据库、方案、表。例如,使用带有参数的“MASTER.INFORMATION\u SCHEMA.DATABASES”视图。
“MASTER.INFORMATION\u SCHEMA.DATABASES”仅返回当前用户的数据库。需要能够定义用户。

Snowflake使用基于角色的访问,因此用户不被授予直接访问数据库的权限,但他们的角色是

要查看哪些角色可以访问哪些数据库,您可以从雪花数据库获取此信息,如果您具有
accountadmin
角色,则您应该可以访问雪花数据库:

选择
角色,特权,
roles.name作为数据库_name,
roles.grantee_name作为role_name
从snowflake.account\u usage.grants\u到\u角色
其中roles.prograted_on='DATABASE'
;

请注意,我认为此表仅显示直接授予角色的权限,而不显示通过其层次关系获得的权限。您可以编写一个更复杂的查询,通过使用
grants_to_roles
以及
grants_to_users
表上的递归查询,计算出通过层次结构向下授予用户的priv。我想’\_(ツ)_/“

我已经编写了一个查询来完成您描述的最后一部分。它运行在雪花数据库上,时间延迟达3小时(尽管大多数项目都小于3小时)。因此,它收集整个帐户中所有用户的所有权限。您可以将其修改为仅运行在单个数据库上,不会有延迟。