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

相关推荐
zkmall1 小时前
阿里云 OSS 在 ZKmall开源商城的应用实践
阿里云·开源·云计算
振鹏Dong2 小时前
深入浅出Redis 缓存使用问题 | 长文分享
数据库·redis
hkj88082 小时前
Sqlite3 查看db文件
数据库·sqlite
黑不拉几的小白兔2 小时前
第十五届蓝桥杯大赛软件赛省赛Python 大学 B 组试做(下)【本期题单: 缴纳过路费, 纯职业小组】
数据库·python·蓝桥杯
kooboo china.2 小时前
SQL实战篇,数据库在Kooboo中的实际应用(一)
javascript·数据库·sql·sqlite
Elastic 中国社区官方博客2 小时前
Elasticsearch:加快 HNSW 图的合并速度
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Java&Develop2 小时前
redis 免安装版本 启动方法 windows 安装包
数据库·windows·redis
wangjinjin1802 小时前
Redis 字符串(String)详解
数据库·redis·缓存
Full Stack Developme2 小时前
SQL 中的 NULL 处理
android·数据库·sql
qixiang20132 小时前
mysql和mongodb
数据库·mysql·mongodb