Устранение ошибки Must be superuser to create this extension
Описание проблемы
Возникает ошибка Must be superuser to create this extension
:
- при попытке установить расширение для PostgreSQL,
- при восстановлении базы данных из дампа с помощью утилиты
pg_restore
.
Решение
В Managed Service for PostgreSQL права суперпользователя не предоставляются, чтобы обеспечить безопасность кластера. Сервис самостоятельно управляет некоторыми операциями, выполняет репликацию данных между хостами, поэтому вмешательство пользователя в работу может привести к падению кластера. Полный список ограничений описан в документации.
Установка расширений возможна только через консоль облака, CLI или API. Полный список поддержимаемых расширений мы описали в статье про управление расширениями.
Если ошибка возникает при восстановлении дампа
Для восстановления из нетекстового архива следуйте инструкции:
1. Получите список объектов восстановления:
pg_restore -l <путь к архиву> > restore.list
2. В полученном файле restore.list закомментируйте или удалите строки, относящиеся к EXTENSIONS
. Например, CREATE EXTENSION ...
.
3. Восстановите с использованием отредактированного списка:
pg_restore --use-list restore.list ...
Чтобы восстановить дамп из текстового архива, пройдите по следующим шагам:
1. Проверьте, есть ли в дампе запросы на создание расширений:
grep "CREATE EXTENSION" dump.sql
2. Скопируйте дамп в новый файл. Закомментируйте или удалите запросы создания расширений в новой версии:
cp dump.sql dump_edited.sql
sed -i 's/CREATE EXTENSION/-- CREATE EXTENSION/g' dump_edited.sql
3. Восстановите дамп:
psql -h <хост> -p 6432 -U <пользователь> -d <база данных> -f dump_edited.sql