Почему я получаю ошибку разрешения PostgreSQL при указании табличного пространства в команде «создать базу данных»?

11

Когда я создаю базу данных в PostgreSQL без явного указания табличного пространства по умолчанию, база данных создается без проблем (я вошел в систему как пользователь pgsys ):

postgres => создать базу данных rich1;
СОЗДАТЬ БАЗУ ДАННЫХ
postgres => \ l +
                                                                            Список баз данных
   Имя | Владелец | Кодировка | Сопоставление | Ctype | Права доступа | Размер | Табличное пространство | Описание
----------- + ---------- + ---------- + ------------- + - ----------- + ------------------------------------- + ----------- + ------------ + ------------------------- -------------------
 Postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 кБ | pg_default | база данных административных подключений по умолчанию
 рдсадмин | рдсадмин | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin = CTc / rdsadmin | Нет доступа | pg_default |
 rich1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7233 кБ | pg_default |
 template0 | рдсадмин | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / rdsadmin | 7345 кБ | pg_default | неизменяемая пустая база данных
                                                             : rdsadmin = CTc / rdsadmin
 template1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / pgsys | 7345 кБ | pg_default | шаблон по умолчанию для новых баз данных
                                                             : pgsys = CTc / pgsys
(5 рядов)

Как вы можете видеть, база данных помещается в табличное пространство pg_default, но если я укажу табличное пространство по умолчанию в предложении tablespace (также все еще зарегистрировано как pgsys ), я получу ошибку разрешения:

postgres => создать базу данных rich2 табличное пространство pg_default;
ОШИБКА: отказано в доступе к табличному пространству pg_default

Вот разрешения для этого пользователя:

postgres => \ du pgsys
               Список ролей
 Название роли | Атрибуты | Член
----------- + ------------- + -----------------
 pgsys | Создать роль | {} Rds_superuser
           : Создать базу данных

Это ошибка PostgreSQL, но я должен отметить, что это экземпляр AWS Aurora в случае, если это имеет значение.

HuggieRich
источник

Ответы:

8

Вот хитрость, по крайней мере с pgAdmin v4: оставьте табличное пространство пустым. При создании базы данных по умолчанию используется значение "pg_default".

логан
источник
1
что сработало, спасибо
Алексей Бузунов
1
спас мне жизнь - спасибо! @HuggieRich должен принять это!
Рон