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.
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.