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

相关推荐
AI人H哥会Java25 分钟前
【PostgreSQL】提高篇——深入了解不同类型的 JOIN(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)应用操作
数据库·sql·postgresql
小小不董2 小时前
《Linux从小白到高手》理论篇(八):Linux的进程管理详解
linux·运维·服务器·数据库·dba
李李李李李同学2 小时前
云计算中过等保三级需要的网络安全设备及详细讲解
安全·云计算·安全设备·等保三级·等级保护测评
bug菌¹2 小时前
滚雪球学Oracle[5.1讲]:Oracle数据库管理与维护
数据库·oracle
运维开发小白2 小时前
Redis入门第一步:认识Redis与快速安装配置
数据库·redis·缓存
小小不董2 小时前
《Linux从小白到高手》理论篇(九):Linux的资源监控管理
linux·运维·服务器·数据库·dba
当归10242 小时前
@SpringBootTest 和 @Test的区别
数据库·log4j
栀夏6133 小时前
MongoDB 的基本使用
数据库
AlbertS3 小时前
AWS上迁移WordPress遭遇若干问题记处理办法
acm·aws·wordpress·alb·route53·postfix