Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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
Amazon redshift 访问红移外部表所需的最低权限_Amazon Redshift_Grant_Amazon Redshift Spectrum - Fatal编程技术网

Amazon redshift 访问红移外部表所需的最低权限

Amazon redshift 访问红移外部表所需的最低权限,amazon-redshift,grant,amazon-redshift-spectrum,Amazon Redshift,Grant,Amazon Redshift Spectrum,根据AWS文件 要运行红移光谱查询,您需要以下权限: 对架构的使用权限 在当前数据库中创建临时表的权限 我有一个外部数据库、模式和在该模式中创建的表。 我创建了一个新的红移用户,并向其授予了外部架构的“使用”权限: grant usage on external_schema to new_user; 但我没有为我的新用户提供外部_数据库的“临时”权限 此外,没有默认权限,因为我使用主用户检查了PG_default_ACL,其中没有行 有人能告诉我为什么我可以查询外部表吗?在Amazo

根据AWS文件

要运行红移光谱查询,您需要以下权限:

  • 对架构的使用权限

  • 在当前数据库中创建临时表的权限

我有一个外部数据库、模式和在该模式中创建的表。 我创建了一个新的红移用户,并向其授予了外部架构的“使用”权限:

grant usage on external_schema to new_user;
但我没有为我的新用户提供外部_数据库的“临时”权限

此外,没有默认权限,因为我使用主用户检查了PG_default_ACL,其中没有行


有人能告诉我为什么我可以查询外部表吗?

在Amazon Redshift中,数据库和模式是不同的概念。用户对象(红移和外部)在模式中创建,临时对象在“临时”模式中创建,并在数据库级别可用

在某些情况下,如果应用了频谱表和红移表之间的联接,则红移需要创建临时表,这就是为什么在文档中提到它,以避免用户出现任何故障/错误

下面是这样说的:

授予在指定数据库中创建临时表的权限。要运行Amazon红移频谱查询,数据库用户必须具有在数据库中创建临时表的权限

注意 默认情况下,用户通过其在公共组中的自动成员身份被授予创建临时表的权限。要删除任何用户创建临时表的权限,请从公共组中撤消临时权限。然后将创建临时表的权限显式授予特定用户或用户组


我想这是说他们需要“当前数据库”的权限,这意味着红移(而不是外部数据库)。不,我不这么认为。这是存储元数据的频谱数据库,正如他们网站上的示例grant语句所示:“将数据库spectrumdb上的临时数据授予组spectrumusers;”。即使在您的情况下,“temp”特权不应该出现在pg_default_Acl结果中吗?