У меня есть база данных Postgresql с 3 схемами (2 определяемых пользователем и 1 общедоступная).
У меня есть сценарий, который делает резервную копию схемы, определенной пользователем, а затем удаляет схему.
Теперь, после выполнения некоторых операций, я хочу восстановить определенные пользователем схемы из резервной копии схемы (schema_backup.out).
Когда я выполняю
cat schema_backup.out | psql xx_db_name_xx
Я получаю следующее сообщение об ошибке
ERROR: permission denied for database xx_db_name_xx
ERROR: schema "aaaa" does not exist
ERROR: permission denied for database xx_db_name_xx
ERROR: schema "bbbb" does not exist
ERROR: must be owner of database xx_db_name_xx
Когда я выполняю ту же команду, что и пользователь Admin, она выполняется нормально. Но когда я выполняю роль пользователя xxxxxx, это не удается.
Может ли кто-нибудь посоветовать мне, какие разрешения / права следует добавить к «xxxxxx» для восстановления схемы?
Postgres уже ответил вам на это: ERROR:
must be owner of database
xx_db_name_xx
.
Тебе надо ALTER
в DATABASE
и SET OWNER
быть пользователем, от имени которого вы пытаетесь внести изменения в схему.
(См. Руководство Postgres для получения информации о ALTER DATABASE
Заявление SQL)
Обычно проще восстанавливать базы данных в качестве суперпользователя Postgres - это позволяет избежать проблем с разрешениями, и обычно права собственности / разрешения восстанавливаются при восстановлении базы данных.