0

我们有两个 PostgreSQL 服务器。在 web server1pguser1上,关联用户创建了使用 web 应用程序所需的所有数据库对象。假设所有对象都在schema1.
同样,在 server2 上pguser2为 Web 服务器 2 创建数据。

我从 server1 获取了模式备份(pgadmin 的备份窗口中的自定义选项)。当我恢复到 server2 时,我希望对象的所有权限和所有权pguser2都与pguser1.

如何做到这一点?如果可能,在还原期间的选项(pg_restore 命令)将是首选。

4

1 回答 1

1

GRANT如果您对非登录角色(又名组)具有特权和所有权,这将大大简化您的任务。让我们命名它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 上同样有效。
此相关答案中的更多详细信息和链接


您可能还对 pgAdmin 的 Grant Wizard 感兴趣。此相关答案中的详细信息

于 2012-07-11T20:33:12.240 回答