Postgres为所有对象生成用户授权语句

时间:2015-10-22 19:25:52

标签: postgresql

我们有一个开发Postgres数据库,其中一个开发人员已经创建了一个应用程序。是否有一个现有的查询将从role_table_grants表中提取信息并生成所有正确的语句以进入生产? PGAdmin将为某些事情创建所有生成脚本,但我没有找到一种较少的手动方式,而只是根据role_table_grants表手动编写所有语句。没有要求任何人花时间去创建它,只是想我会问是否有一些现有的迁移脚本可以提供帮助。

感谢。

2 个答案:

答案 0 :(得分:3)

将架构转储到文件中;将pg_dump或pg_dumpall与CGPathMoveToPoint选项一起使用。

然后使用--schema-only获取所有GRANT和REVOKE语句。

在我的开发机器上,我可能会做这样的事情。

$ pg_dump -h localhost -p 5435 -U postgres --schema-only sandbox > sandbox.sql
$ grep "^GRANT\|^REVOKE" sandbox.sql 
REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
[snip]

答案 1 :(得分:1)

也许pg_dumpall就是您所需要的。可能使用--schema-only选项以便仅转储模式,而不是转储开发数据。

如果您不需要移动所有数据库,可以使用pg_dumpall --globals-only转储角色(不属于任何特定数据库),然后使用pg_dump转储某个特定数据库。 / p>