Sql 红移架构的只读权限
我想为红移中的组授予只读权限。 我使用了这个命令Sql 红移架构的只读权限,sql,postgresql,permissions,amazon-redshift,database-administration,Sql,Postgresql,Permissions,Amazon Redshift,Database Administration,我想为红移中的组授予只读权限。 我使用了这个命令 GRANT USAGE ON SCHEMA myschema TO GROUP my_group; GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO GROUP my_group; ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO GROUP my_group; REVOKE CREATE ON SCHEM
GRANT USAGE ON SCHEMA myschema TO GROUP my_group;
GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO GROUP my_group;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO GROUP my_group; REVOKE CREATE ON SCHEMA myschema FROM GROUP my_group;"
这是可行的,但如果创建了新表,那么用户就没有这些表的权限
根据美国焊接学会
在SCHEMA\u名称中
可选。如果出现IN SCHEMA子句,则指定
默认权限应用于在中创建的新对象
明确规定
架构名称。在本例中,是目标的用户或用户组
的ALTER DEFAULT权限必须具有的CREATE权限
指定的架构。特定于架构的默认特权为
已添加到现有全局默认权限。默认情况下,默认情况下
特权全局应用于整个数据库
这是否意味着我必须向该组授予创建权限?假设您使用user\u x创建表,然后您要向groupmy\u group授予读取权限,这是我通常用于实现该目的的命令:
ALTER DEFAULT PRIVILEGES FOR USER user_x IN SCHEMA myschema GRANT SELECT ON TABLES TO GROUP my_group;
我希望,如果有任何用户创建表,那么它应该是可读的。不幸的是,我从来没有设法让它为所有用户工作。在我们的系统中,我们知道特定模式中的表是由etl_用户创建的,因此我们专门知道谁在模式中创建表。