AWS Redshift 如何让新的table创建即自动赋予权限

我们先来解释一下这个题目:

在MySQL里面,如果我们运行如下权限语句,那么这个database/schema database1中,未来创建的表,默认也是会赋予select权限给user1的:

grant select on database1.* to 'user1'@'%';

但是对于AWS Redshift来说,即便运行了:

grant select on all tables in schema schema1 to user1;

对于schema1后续创建的future table,也不会默认赋予user1 select权限,需要每次创建了新的table以后手动grant权限。

Redshift这样设置的原因是,Redshift底层是与PostgreSQL 8版本兼容的,根据PostgreSQL官网,这个设置本身就是PostgreSQL对于权限的管理,而不是Redshift这个服务对于权限的特定设置。

那么如果我们希望像mysql一样,在Redshift内省去把新创建的table进行再次grant的步骤,我们可以用如下query来赋予权限:

grant usage on schema schematest1 to user1;
alter DEFAULT PRIVILEGES in schema schematest1 grant select on tables to user1;
grant select on all tables in schema schematest1 to user1;

这样schematest1里面新创建的table就也默认对user1有select权限了。

这个权限也并不是Redshift本身的语法,而是PostgreSQL原生语法,详情如下:

PostgreSQL: Documentation: 17: ALTER DEFAULT PRIVILEGES

Redshift文档中也对这个alter default privleges进行了解释,文档列举如下:

ALTER DEFAULT PRIVILEGES - Amazon Redshift

相关推荐
企业管理8MSaaS8 分钟前
如何选择适合Scrum团队的项目管理系统?
云计算·scrum
小蜗牛慢慢爬行11 分钟前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
企业管理8MSaaS11 分钟前
如何在 Scrum 管理中化解团队冲突?
云计算·scrum
hanbarger14 分钟前
nosql,Redis,minio,elasticsearch
数据库·redis·nosql
微服务 spring cloud36 分钟前
配置PostgreSQL用于集成测试的步骤
数据库·postgresql·集成测试
先睡38 分钟前
MySQL的架构设计和设计模式
数据库·mysql·设计模式
弗罗里达老大爷40 分钟前
Redis
数据库·redis·缓存
仰望大佬0071 小时前
Avalonia实例实战五:Carousel自动轮播图
数据库·microsoft·c#
学不透java不改名1 小时前
sqlalchemy连接dm8 get_columns BIGINT VARCHAR字段不显示
数据库