AWS Redshift把老用户权限赋予新用户

问题描述:

Redshift内已经有了一个user A,不知道赋予了A什么权限,希望将所有权限都赋予User B。

分析过程 及 测试:

在此为大家提供如下github上两个script,是很有用的:

1. 这个脚本可以帮忙把一个user所拥有的所有的object找到:

https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_find_dropuser_objs.sql

2. 这个脚本可以把一个user或者group具有的所有的权限,并生成一个可以在drop user以前去掉所有权限的ddl query集合:

amazon-redshift-utils/src/AdminViews/v_generate_user_grant_revoke_ddl.sql at master · awslabs/amazon-redshift-utils · GitHub

通过上面第二个脚本为例,我们测试如下:

建议运行时将第一行CREATE OR REPLACE VIEW admin.v_generate_user_grant_revoke_ddl 改为了 public.v_generate_user_grant_revoke_ddl

复制代码
dev=# select ddl from public.v_generate_user_grant_revoke_ddl where grantee='root1';
                                            ddl
-------------------------------------------------------------------------------------------
 GRANT ALL on public.t2 to root1;
 GRANT ALL on schema public to root1;
 GRANT ALL on schema dict to root1;
 ALTER DEFAULT PRIVILEGES for user root in schema public GRANT SELECT  on tables to root1;
 REVOKE ALL on public.t2 FROM root1;
 REVOKE ALL on schema public FROM root1;
 REVOKE ALL on schema dict FROM root1;
 ALTER DEFAULT PRIVILEGES for user root in schema public REVOKE ALL on tables FROM root1;
(8 rows)

这个脚本是用来查看Grantee(root1) 的全部privilege并进行revoke的。我们可以用这个脚本,将user A的权限寻找出来,并在ddl编辑中替换成B,这样可以直接运行这个view产生的ddl,给B赋予所有A的权限。

相关推荐
这个DBA有点耶37 分钟前
多模数据库深度解读:从“多库拼装”到“一库多能”的架构演进
数据库·mysql·dba
程序员夏洛1 小时前
MySQL 默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
艺术留白1 小时前
MokaTest使用篇-SQL接口
数据库·sql
( •̀∀•́ )9202 小时前
MySQL 自动备份与恢复方案
数据库·mysql·oracle
这个DBA有点耶2 小时前
大事务的“事前预防”:监控、拦截、Kill,四层防线一次讲透
数据库·mysql·代码规范
tachibana23 小时前
RAGAS 指标解读
数据库·人工智能·算法·机器学习·架构·大模型·llm
mlidongfeng3 小时前
[AI][昇腾950]TA 学习
数据库·学习
bestsun9993 小时前
rac集群环境下配置JDBC
数据库
@HNUSTer4 小时前
基于 GEE 的 Sentinel-2 海岸线自动提取:从NDWI水体指数到Canny边缘检测全流程
云计算·数据集·遥感大数据·gee·云平台·canny边缘检测·sentinel-2
java_logo4 小时前
Docker 部署 FalkorDB:轻松搭建属性图数据库与知识图谱平台
数据库·docker·知识图谱·falkordb·轩辕镜像·falkordb部署教程·falkordb部署文档