¿Por qué obtengo un error de permiso de PostgreSQL al especificar un espacio de tabla en el comando "crear base de datos"?

11

Cuando creo una base de datos en PostgreSQL sin especificar explícitamente un espacio de tabla predeterminado, la base de datos se crea sin problemas (estoy conectado como usuario de pgsys ):

postgres => crear base de datos rich1;
CREAR BASE DE DATOS
postgres => \ l +
                                                                            Listado de bases de datos
   Nombre | Propietario | Codificación | Cotejo | Ctype | Privilegios de acceso | Tamaño | Espacio de tabla | Descripción
----------- + ---------- + ---------- + ------------- + - ----------- + ------------------------------------- + ----------- + ------------ + ------------------------- -------------------
 postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | El | 7455 kB | pg_default | base de datos de conexión administrativa predeterminada
 rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin = CTc / rdsadmin | Sin acceso | pg_default |
 rico1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | El | 7233 kB | pg_default |
 template0 | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / rdsadmin | 7345 kB | pg_default | base de datos vacía no modificable
                                                             : rdsadmin = CTc / rdsadmin
 plantilla1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / pgsys | 7345 kB | pg_default | plantilla predeterminada para nuevas bases de datos
                                                             : pgsys = CTc / pgsys
(5 filas)

Como puede ver, la base de datos se coloca en el espacio de tabla pg_default, pero si especifico el espacio de tabla predeterminado en la cláusula de espacio de tabla (también todavía conectado como pgsys ) obtengo un error de permiso:

postgres => crear base de datos rich2 tablespace pg_default;
ERROR: permiso denegado para tablespace pg_default

Aquí están los permisos para ese usuario:

postgres => \ du pgsys
               Lista de roles
 Nombre del rol | Atributos | Miembro de
----------- + ------------- + -----------------
 pgsys | Crear rol | {rds_superuser}
           : Crear DB

Este es un error de PostgreSQL, pero debo mencionar que se trata de una instancia de AWS Aurora en caso de que marque la diferencia.

HuggieRich
fuente

Respuestas:

8

Aquí está el truco, al menos con pgAdmin v4: deje el espacio de tabla en blanco. El valor predeterminado será "pg_default" al crear la base de datos.

Logan
fuente
1
eso funcionó, gracias
Alex Buzunov
1
me salvó la vida - gracias! @HuggieRich debería aceptarlo!
Ron