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的权限。

相关推荐
程序新视界5 小时前
在连表查询场景下,MySQL隐式转换存在的坑
数据库·mysql·dba
九河云6 小时前
在云计算环境中实施有效的数据安全策略
大数据·网络·数据库·云计算
爱吃烤鸡翅的酸菜鱼6 小时前
从数据库直连到缓存预热:城市列表查询的性能优化全流程
java·数据库·后端·spring·个人开发
openHiTLS密码开源社区6 小时前
ARMv9 CCA机密计算架构演进技术解析:重塑云原生时代的数据安全基石
云计算·arm·trustzone·realm·cca·机密计算·tee/ree
dualven_in_csdn7 小时前
ubuntu离线安装 xl2tpd
linux·数据库·ubuntu
初听于你9 小时前
高频面试题解析:算法到数据库全攻略
数据库·算法
BTU_YC15 小时前
Neo4j查询计划完全指南:读懂数据库的“执行蓝图“
数据库·neo4j
非极限码农15 小时前
Neo4j图数据库上手指南
大数据·数据库·数据分析·neo4j
mit6.82415 小时前
[C# starter-kit] 命令/查询职责分离CQRS | MediatR |
java·数据库·c#