Восстановить базу данных с измененными привилегиями
У нас есть два сервера 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. Подробности в этом ответе