Pourquoi est-ce que j'obtiens une erreur d'autorisation PostgreSQL lors de la spécification d'un espace de table dans la commande "create database"?

11

Lorsque je crée une base de données dans PostgreSQL sans spécifier explicitement un espace de table par défaut, la base de données est créée sans problème (je suis connecté en tant qu'utilisateur pgsys ):

postgres => créer une base de données rich1;
CRÉER UNE BASE DE DONNÉES
postgres => \ l +
                                                                            Liste des bases de données
   Nom | Propriétaire | Encodage | Collation | Ctype | Privilèges d'accès | Taille | Espace disque logique | La description
----------- + ---------- + ---------- + ------------- + - ----------- + ------------------------------------- + ----------- + ------------ + ------------------------- -------------------
 postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 kB | pg_default | base de données de connexion administrative par défaut
 rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin = CTc / rdsadmin | Pas d'accès | 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 | base de données vide non modifiable
                                                             : rdsadmin = CTc / rdsadmin
 template1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / pgsys | 7345 kB | pg_default | modèle par défaut pour les nouvelles bases de données
                                                             : pgsys = CTc / pgsys
(5 rangées)

Comme vous pouvez le voir, la base de données est placée dans le tablespace pg_default, mais si je spécifie le tablespace par défaut dans la clause tablespace (également toujours connecté en tant que pgsys ), j'obtiens une erreur d'autorisation:

postgres => créer la base de données rich2 tablespace pg_default;
ERREUR: autorisation refusée pour le tablespace pg_default

Voici les autorisations pour cet utilisateur:

postgres => \ du pgsys
               Liste des rôles
 Nom du rôle | Attributs | Membre de
----------- + ------------- + -----------------
 pgsys | Créer un rôle | {rds_superuser}
           : Créer une base de données

Il s'agit d'une erreur PostgreSQL, mais je dois mentionner qu'il s'agit d'une instance AWS Aurora au cas où cela ferait une différence.

HuggieRich
la source

Réponses:

8

Voici l'astuce, au moins avec pgAdmin v4: laissez le tablespace vide. Il sera par défaut "pg_default" lors de la création de la base de données.

Logan
la source
1
qui a fonctionné, merci
Alex Buzunov
1
m'a sauvé la vie - merci! @HuggieRich devrait l'accepter!
Ron