Восстановить базу данных с измененными привилегиями

У нас есть два сервера PostgreSQL. На веб-сервере1 pguser1 это связанный пользователь, который создает все объекты базы данных, необходимые для работы с веб-приложением. Допустим, все объекты находятся в schema1,
Точно так же на server2 pguser2 создает данные для веб-сервера 2.

Я взял резервную копию схемы (пользовательский параметр в окне резервного копирования из pgadmin) с сервера server1. Когда я восстанавливаю на server2, я хочу, чтобы все привилегии и права собственности на объекты были с pguser2 и ничего с pguser1,

Как этого достичь? Если это возможно, предпочтительнее использовать параметр во время восстановления (команда pg_restore).

1 ответ

Это очень сильно упростит вашу задачу, если вы GRANT привилегии и право владения ролью без регистрации (она же группа). Давайте назовем это foo_admin, На сервере1 ты

GRANT foo_admin TO pguser1;

На сервере2 ты

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.
Более подробная информация и ссылки в этом связанном ответе.


Вы также можете быть заинтересованы в Grant Wizard от pgAdmin. Подробности в этом ответе

Другие вопросы по тегам