Как я могу изменить владельца по умолчанию для публичной схемы в базе данных postgresql? - PullRequest
0 голосов
/ 21 января 2019

Когда я создаю базу данных с моим пользователем, общедоступная схема создается с помощью пользователя "postgres".Я могу создавать и удалять таблицы в этой схеме, но не могу удалить схему или изменить владельца.

Я устанавливаю миграцию Phinx для проекта php.Это зрелый проект, который имеет много таблиц.Для первой миграции по методу up () я загружаю файл sql со схемой базы данных, а по методу down () я бы отбрасывал схему (таблицы, триггеры, процедуры ...)

class FirstMigration extends AbstractMigration
{
    public function up()
    {
        $schema= file_get_contents('./database/migrations/schemaDB.sql');
        $this->execute($schema);
    }

    public function down()
    {
        $this->execute("DROP SCHEMA public CASCADE");
        $this->execute("CREATE SCHEMA public");
    }
}

Когда я выполняю откат, у меня появляется ошибка:

Недостаточно прав: 7 ОШИБКА: Вы должны быть владельцем общедоступной схемы.

image

При создании базы данных я выбираю пользователя "citest"

image

Но владельцем по умолчанию для публичной схемы является "postgres"!

и я не могу его изменить.

Мой пользователь является владельцем базы данных, но не является владельцем общедоступной схемы, которая является пользователем "postgres".

1 Ответ

0 голосов
/ 31 января 2019

Пользователь по умолчанию для схемы public задается базой данных шаблонов (называемой template1), которую Postgres копирует при создании новой БД. Если вы хотите изменить настройки по умолчанию для вновь созданных баз данных, вам нужно изменить template1. Например, вы можете DROP SCHEMA public из template1. Теперь вам не нужно начинать миграцию с удаления public, потому что оно не существует. Конечно, для этого вам необходимо (хотя бы временно) войти в систему с пользователем, у которого есть права на редактирование template1.

Для получения дополнительной информации читайте эту ветку в списке рассылки Postgres, https://www.postgresql.org/message-id/CAFjNrYu8GqD%3D17DimG9QtWoV1hPviqHxaZp2umWAPkpUOFAGYg%40mail.gmail.com.

...