Мы используем Liquibase для управления и выполнения изменений в нашей базе данных. В нашей среде DEV (и особенно на локальных машинах) мы часто воссоздаем таблицы, чтобы получить чистый лист. Мы только что перешли с MySQL на Postgres и столкнулись с проблемой, связанной с воссозданием этих таблиц.
Изначально мы предоставили нашему пользователю БД следующее:
GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO mydbuser;
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO mydbuser;
Это выполняется через psql после подключения к нашей собственной БД (где public - это схема по умолчанию / только).
Все в порядке, пока мы не попросим Liquibase воссоздать таблицы, и в этом случае он отбросит все таблицы и создаст их снова.
После этого выясняется, что mydbuser потерял все свои права доступа к таблицам.
Согласно нескольким ресурсам (например, this) нам необходимо изменить привилегии по умолчанию, поэтому мы подчиняемся:
GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO mydbuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT,INSERT,UPDATE,DELETE ON TABLES TO mydbuser;
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA public TO mydbuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, USAGE ON SEQUENCES TO mydbuser;
Однако, хотя это кажется очень логичным, ничего не изменилось. Все гранты (даже избранные) по-прежнему теряются после воссоздания таблиц.
Что мы делаем не так или что нам еще нужно делать?
ОБНОВЛЕНИЕ
\ ddp показывает: Права доступа по умолчанию
Владелец | Схема | Тип | Права доступа
---------- + -------- + ---------- + -------------- ------
postgres | общественный | последовательность | mydb = rU / postgres
postgres | общественный | стол | mydb = arwd / postgres
ALTER DEFAULT PRIVILEGES...
? Что происходит между этой командой и воссозданием объектов? Что сообщает\dddp
в psql перед воссозданием таблиц? - person Daniel Vérité   schedule 15.09.2013\ddp
(настройки прав доступа по умолчанию) - person Daniel Vérité   schedule 15.09.2013