Perché viene visualizzato un errore di autorizzazione PostgreSQL quando si specifica un tablespace nel comando "crea database"?


11

Quando creo un database in PostgreSQL senza specificare esplicitamente un tablespace predefinito, il database viene creato senza problemi (ho effettuato l'accesso come utente pgsys ):

postgres => crea database rich1;
CREA DATABASE
postgres => \ l +
                                                                            Elenco di database
   Nome | Proprietario | Codifica | Collazione | Ctype | Privilegi di accesso | Dimensione | Tablespace | Descrizione
----------- + ---------- + ---------- + ------------- + - ----------- + ------------------------------------- + ----------- + ------------ + ------------------------- -------------------
 Postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 kB | pg_default | database delle connessioni amministrative predefinito
 rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin = CTc / rdsadmin | Nessun accesso | pg_default |
 rich1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7233 kB | pg_default |
 template0 | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / rdsadmin | 7345 kB | pg_default | database vuoto non modificabile
                                                             : rdsadmin = CTc / rdsadmin
 template1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / pgsys | 7345 kB | pg_default | modello predefinito per nuovi database
                                                             : pgsys = CTc / pgsys
(5 file)

Come puoi vedere, il database viene inserito nel tablespace pg_default, ma se specifico il tablespace predefinito nella clausola tablespace (anch'esso ancora registrato come pgsys ) ottengo un errore di autorizzazione:

postgres => crea database rich2 tablespace pg_default;
ERRORE: autorizzazione negata per tablespace pg_default

Ecco le autorizzazioni per quell'utente:

postgres => \ du pgsys
               Elenco dei ruoli
 Nome del ruolo | Attributi | Membro di
----------- + ------------- + -----------------
 pgsys | Crea ruolo | {} Rds_superuser
           : Crea DB

Questo è un errore PostgreSQL, ma dovrei menzionare che si tratta di un'istanza di AWS Aurora nel caso in cui ciò faccia la differenza.

Risposte:


8

Ecco il trucco, almeno con pgAdmin v4: lasciare vuoto il tablespace. L'impostazione predefinita è "pg_default" durante la creazione del database.


1
che ha funzionato, grazie
Alex Buzunov il

1
mi ha salvato la vita - grazie! @HuggieRich dovrebbe accettarlo!
Ron,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.