Database 如何在红移中授予所有架构的使用权?

Database 如何在红移中授予所有架构的使用权?,database,amazon-web-services,amazon-redshift,devops,Database,Amazon Web Services,Amazon Redshift,Devops,我想创建一个只读用户,该用户应该可以选择访问所有模式中的所有表。我查看了红移文档,但看起来我们只能在一条sql语句中授予对特定模式的访问权。(并非所有架构同时都是只读的。此只读用户应该对将来创建的所有表/架构具有只读访问权限。我不确定如何做到这一点 我是否遗漏了某些内容或是AWS故意这么做的?如果这是一个限制,那么解决这个问题的可能解决方法是什么?您不能授予SELECT(“只读”)在红移中一次对多个架构的权限,因为您已经发现这只能在每个架构的基础上进行。也不可能设置权限,以便用户自动获得对新创建

我想创建一个只读用户,该用户应该可以选择访问所有模式中的所有表。我查看了红移文档,但看起来我们只能在一条sql语句中授予对特定模式的访问权。(并非所有架构同时都是只读的。此只读用户应该对将来创建的所有表/架构具有只读访问权限。我不确定如何做到这一点

我是否遗漏了某些内容或是AWS故意这么做的?如果这是一个限制,那么解决这个问题的可能解决方法是什么?

您不能授予SELECT(“只读”)在红移中一次对多个架构的权限,因为您已经发现这只能在每个架构的基础上进行。也不可能设置权限,以便用户自动获得对新创建架构的任何类型的权限,除非该用户是“超级用户”。这是大多数数据库平台的典型情况,即必须在创建架构后创建架构级权限

我建议您最好的方法是查看创建新模式的过程,并查看权限授予是否可以作为该过程的一部分来完成。考虑使用“强>用户组< /强>而不是用户,如果需要添加或更改具有这些权限的用户,这将使管理变得更容易。” e、 g

您不能在红移中同时授予多个架构的SELECT(“只读”)权限,因为您已经发现这只能在每个架构的基础上进行。也不能设置权限,以便用户自动获得新创建架构的任何类型的权限,除非该用户是“超级用户”。这是大多数数据库平台的典型情况,即必须在创建架构后创建架构级权限

我建议您最好的方法是查看创建新模式的过程,并查看权限授予是否可以作为该过程的一部分来完成。考虑使用“强>用户组< /强>而不是用户,如果需要添加或更改具有这些权限的用户,这将使管理变得更容易。” e、 g


你是对的,这就是它的工作原理。这不是AWS故意做的,这是postgres的一项功能。你可以在redshift之外设置一个脚本来自动化这个过程。我明白了。谢谢你的回答。然后我会写一个udf来完成它。对-但不是redshift udf。它需要在redshift之外。我明白了,但出于好奇-W为什么它不能是红移UDF?我正在考虑从系统表中获取所有架构,并在循环中运行该命令。您不能在红移UDF中访问表。您是正确的,这就是它的工作方式。这不是AWS故意做的,它是postgres的一个功能。您可以在红移UDF之外设置一个脚本来自动化该过程。我看到了。谢谢你的回答。然后我会写一个udf来完成它。对-但不是红移udf。它需要在红移之外。我明白了,但出于好奇-为什么它不能是红移udf?我正在考虑从系统表中获取所有架构并在循环中运行命令。如果您希望架构中所有新创建的
s自动将任务设置为特定角色如果您希望架构中所有新创建的
s自动将任务设置为特定角色,您也可以
CREATE GROUP readonlyusers;
CREATE USER my_readonly_user WITH PASSWORD 'abc' IN GROUP readonlyusers;

-- when creating a new schema
CREATE SCHEMA IF NOT EXISTS myschema;
GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO GROUP readonlyusers;