web-dev-qa-db-fra.com

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

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 | 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 lignes)

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.

11
HuggieRich

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.

8
Logan