我们有两个PostgreSQL服务器。在Web server1上pguser1
是关联用户,它创建使用Web应用程序所需的所有数据库对象。比方说,所有对象都在schema1
同样,在server2 pguser2
上为Web服务器2创建数据。
我从server1进行了架构备份(来自pgadmin的备份窗口中的自定义选项)。当我恢复到server2时,我希望对象的所有权限和所有权都与pguser2
一致,pguser1
没有。
如何实现这一目标?如果可能,在恢复期间(pg_restore命令)期间的选项将是首选。
答案 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
中的详细信息