使用更改的权限还原数据库

时间:2012-07-11 10:26:35

标签: postgresql privileges grant postgresql-9.0 pg-restore

我们有两个PostgreSQL服务器。在Web server1上pguser1是关联用户,它创建使用Web应用程序所需的所有数据库对象。比方说,所有对象都在schema1 同样,在server2 pguser2上为Web服务器2创建数据。

我从server1进行了架构备份(来自pgadmin的备份窗口中的自定义选项)。当我恢复到server2时,我希望对象的所有权限和所有权都与pguser2一致,pguser1没有。

如何实现这一目标?如果可能,在恢复期间(pg_restore命令)期间的选项将是首选。

1 个答案:

答案 0 :(得分:1)

如果您GRANT对非登录角色(a.k.a.组)拥有特权和所有权,那么这将极大地简化您的任务。我们将它命名为foo_admin。在server1上你

GRANT foo_admin TO pguser1;

在server2上你

REVOKE foo_admin FROM pguser1;
GRANT foo_admin TO pguser2;

全部完成。或者更好的是:破解转储文件并将1替换为行

中的2
GRANT foo_admin TO pguser1;

..还原之前。当然,必须首先创建pguser2

现在,只需确保在server1上创建任何内容

ALTER TABLE wuchtel12.game OWNER TO foo_admin;

并设置权限。您可以预设每个架构的权限。类似的东西:

ALTER DEFAULT PRIVILEGES IN SCHEMA schema1
GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES
TO foo_admin;

ALTER DEFAULT PRIVILEGES IN SCHEMA schema1
GRANT SELECT, UPDATE, USAGE ON SEQUENCES
TO foo_admin;

这在server1和server2上的工作方式相同 More details and links in this related answer


您可能也对pgAdmin的Grant Wizard感兴趣。 this related answer

中的详细信息