Postgresql 架构中新表的红移默认权限

Postgresql 架构中新表的红移默认权限,postgresql,permissions,amazon-redshift,Postgresql,Permissions,Amazon Redshift,我正在使用一个服务在我们的红移仓库中生成表。它在模式中删除表,并每天重新构建它们。我更改了默认权限,授予user1对它的读取权限,但它不起作用 从红移文档运行此操作: select pg_get_userbyid(d.defacluser) as user, n.nspname as schema, case d.defaclobjtype when 'r' then 'tables' when 'f' then 'functions' end as object_type, array

我正在使用一个服务在我们的红移仓库中生成表。它在模式中删除表,并每天重新构建它们。我更改了默认权限,授予
user1
对它的读取权限,但它不起作用

从红移文档运行此操作:

select pg_get_userbyid(d.defacluser) as user, 
n.nspname as schema, 
case d.defaclobjtype when 'r' then 'tables' when 'f' then 'functions' end 
as object_type, 
array_to_string(d.defaclacl, ' + ')  as default_privileges 
from pg_catalog.pg_default_acl d 
left join pg_catalog.pg_namespace n on n.oid = d.defaclnamespace;
为所讨论的架构提供以下行:

+-------------+------------------+-------------+---------------------+
|    user     |      schema      | object_type | default_privileges  |
+-------------+------------------+-------------+---------------------+
| mysuperuser | schemainquestion | tables      | user1=r/mysuperuser |
+-------------+------------------+-------------+---------------------+
这是我运行以更改权限的命令:

ALTER DEFAULT PRIVILEGES IN SCHEMA schemainquestion GRANT SELECT ON  TABLES to user1;

我使用
has_schema_privilege
验证了
user1
对架构具有
用法
权限。

您必须以创建表的用户身份运行
ALTER DEFAULT PRIVILEGES
语句,或者为该用户添加
FOR ROLE
子句