Por que recebo um erro de permissão do PostgreSQL ao especificar um espaço de tabela no comando "criar banco de dados"?

11

Quando crio um banco de dados no PostgreSQL sem especificar explicitamente um espaço de tabela padrão, o banco de dados é criado sem problemas (estou logado como usuário pgsys ):

postgres => criar banco de dados rich1;
CRIAR BASE DE DADOS
postgres => \ l +
                                                                            Lista de bancos de dados
   Nome Proprietário Codificação | Agrupamento | Tipo | Privilégios de acesso | Tamanho | Espaço de tabela | Descrição
----------- + ---------- + ---------- + ------------- + - ----------- + ------------------------------------- + ----------- + ------------ + ------------------------- -------------------
 postgres | pgsys | UTF8 pt_US.UTF-8 | pt_US.UTF-8 | | 7455 kB | pg_default | banco de dados de conexão administrativa padrão
 rdsadmin | rdsadmin | UTF8 pt_US.UTF-8 | pt_US.UTF-8 | rdsadmin = CTc / rdsadmin | Sem acesso | pg_default |
 rich1 | pgsys | UTF8 pt_US.UTF-8 | pt_US.UTF-8 | | 7233 kB | pg_default |
 template0 | rdsadmin | UTF8 pt_US.UTF-8 | pt_US.UTF-8 | = c / rdsadmin | 7345 kB | pg_default | banco de dados vazio não modificável
                                                             : rdsadmin = CTc / rdsadmin
 template1 | pgsys | UTF8 pt_US.UTF-8 | pt_US.UTF-8 | = c / pgsys | 7345 kB | pg_default | modelo padrão para novos bancos de dados
                                                             : pgsys = CTc / pgsys
(5 linhas)

Como você pode ver, o banco de dados é colocado no espaço de tabela pg_default, mas se eu especificar o espaço de tabela padrão na cláusula tablespace (também ainda logada como pgsys ), recebo um erro de permissão:

postgres => criar banco de dados rich2 tablespace pg_default;
ERRO: permissão negada para o espaço de tabela pg_default

Aqui estão as permissões para esse usuário:

postgres => \ du pgsys
               Lista de funções
 Nome da função | Atributos Membro de
----------- + ------------- + -----------------
 pgsys | Criar função | {rds_superuser}
           : Criar banco de dados

Este é um erro do PostgreSQL, mas devo mencionar que é uma instância do AWS Aurora, caso isso faça alguma diferença.

HuggieRich
fonte

Respostas:

8

Aqui está o truque, pelo menos com o pgAdmin v4: Deixe o espaço de tabela em branco. O padrão será "pg_default" ao criar o banco de dados.

Logan
fonte
11
que funcionou, obrigado
Alex Buzunov
11
salvou minha vida - thx! @HuggieRich deve aceitá-lo!
Ron