Warum wird bei der Angabe eines Tabellenbereichs im Befehl "Datenbank erstellen" ein PostgreSQL-Berechtigungsfehler angezeigt?

11

Wenn ich eine Datenbank in PostgreSQL erstelle, ohne explizit einen Standardtabellenbereich anzugeben, wird die Datenbank ohne Probleme erstellt (ich bin als pgsys- Benutzer angemeldet ):

postgres => Datenbank erstellen rich1;
DATENBANK ERSTELLEN
postgres => \ l +
                                                                            Liste der Datenbanken
   Name | Besitzer | Kodierung | Sortierung | Ctype | Zugriffsrechte | Größe | Tablespace | Beschreibung
----------- + ---------- + ---------- + ------------- + - ----------- + --------------------------------- + ----------- + ------------ + ------------------------- -------------------
 postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 kB | pg_default | Standard-Datenbank für administrative Verbindungen
 rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin = CTc / rdsadmin | Kein Zugriff | 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 | nicht veränderbare leere Datenbank
                                                             : rdsadmin = CTc / rdsadmin
 template1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / pgsys | 7345 kB | pg_default | Standardvorlage für neue Datenbanken
                                                             : pgsys = CTc / pgsys
(5 Reihen)

Wie Sie sehen können, wird die Datenbank in den Tabellenbereich pg_default gestellt. Wenn ich jedoch den Standardtabellenbereich in der Tablespace-Klausel (auch immer noch als pgsys angemeldet ) angeben , wird ein Berechtigungsfehler angezeigt :

postgres => Datenbank-Rich2-Tablespace erstellen pg_default;
FEHLER: Berechtigung für Tabellenbereich pg_default verweigert

Hier sind die Berechtigungen für diesen Benutzer:

postgres => \ du pgsys
               Liste der Rollen
 Rollenname | Attribute | Mitglied von
----------- + ------------- + -----------------
 pgsys | Rolle erstellen | {rds_superuser}
           : DB erstellen

Dies ist ein PostgreSQL-Fehler, aber ich sollte erwähnen, dass dies eine AWS Aurora-Instanz ist, falls dies einen Unterschied macht.

HuggieRich
quelle

Antworten:

8

Hier ist der Trick, zumindest mit pgAdmin v4: Lassen Sie den Tablespace leer. Beim Erstellen der Datenbank wird standardmäßig "pg_default" verwendet.

Logan
quelle
1
das hat funktioniert, danke
Alex Buzunov
1
hat mein Leben gerettet - danke! @ HuggieRich sollte es akzeptieren!
Ron