When I create a database in PostgreSQL without explicitly specifying a default tablespace the database is created without issue (I'm logged in as the pgsys user):
postgres=> create database rich1;
CREATE DATABASE
postgres=> \l+
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges | Size | Tablespace | Description
-----------+----------+----------+-------------+-------------+-------------------------------------+-----------+------------+--------------------------------------------
postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 kB | pg_default | default administrative connection database
rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin=CTc/rdsadmin | No Access | 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 | unmodifiable empty database
: rdsadmin=CTc/rdsadmin
template1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/pgsys | 7345 kB | pg_default | default template for new databases
: pgsys=CTc/pgsys
(5 rows)
As you can see, the database is put into the pg_default tablespace, but if I specify the default tablespace in the tablespace clause (also still logged in as pgsys) I get a permission error:
postgres=> create database rich2 tablespace pg_default; ERROR: permission denied for tablespace pg_default
Here's the permissions for that user:
postgres=> \du pgsys
List of roles
Role name | Attributes | Member of
-----------+-------------+-----------------
pgsys | Create role | {rds_superuser}
: Create DB
This is PostgreSQL error, but I should mention that this an AWS Aurora instance in case that makes a difference.