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

相关推荐
2401_8654396320 分钟前
HTML函数在低温环境下启动慢吗_温度对硬件启动影响【方法】
jvm·数据库·python
NotFound48624 分钟前
分享实战心得PostgreSQL 主从复制:告别单点故障,附主从切换与延迟监控命令
数据库·postgresql
minebmw77 小时前
Oracle 19.29 中 ORA-00600 [4193] 错误完全解析与恢复指南
数据库·oracle
m0_377618237 小时前
Golang怎么连接MySQL数据库_Golang MySQL连接教程【总结】
jvm·数据库·python
weixin_586061468 小时前
C#怎么通过反射获取类属性_C#如何动态读取元数据【进阶】
jvm·数据库·python
Pluto_CSND8 小时前
PostgreSQL 聚合函数总览
数据库·postgresql
资深数据库专家8 小时前
总账EBS 应用服务器1 的监控分析
java·网络·数据库
m0_678485458 小时前
CSS如何控制表格单元格边框合并_通过border-collapse实现
jvm·数据库·python
m0_748839498 小时前
如何用组合继承模式实现父类方法复用与子类属性独立
jvm·数据库·python
qq_334563559 小时前
PHP源码是否依赖特定芯片组_Intel与AMD平台差异【操作】
jvm·数据库·python