Crear nuevo usuario
CREATE USER <user> WITH PASSWORD '<password>';
Asignar privilegios al usuario
GRANT ALL PRIVILEGES ON DATABASE <database> TO <user>;
Nótese que esta operación no otorga permisos al usuario para crear nuevas bases de datos.
Dar permiso al usuario para crear nuevas bases de datos
ALTER USER <user> CREATEDB;
Dar permisos de superusuario
Podemos dar todos los permisos de gestión a un usuario normal con el comando:
ALTER ROLE <user> SUPERUSER;
Esto nos permite ejecutar diversos comandos, más allá de crear y utilizar bases de datos, con un usuario “normal”, como por ejemplo añadir extensiones a una base de datos existente:
CREATE EXTENSION postgis;
Comando que no podríamos ejecutar sin ser superusuario.
Backup simple de una base de datos (en consola)
pg_dump -U <user> -c <database> > database_dump.sql
Nótese que este comando vuelca la base de datos tal y como es, con sus
usuarios y sus permisos. Si se intenta cargar esta base de datos en otro
cluster PostgreSQL distinto al que la creó, habrá que crear primero dichos
usuarios. Para evitar esto, se pueden usar los siguientes parámetros al final
del comando pg_dump: --no-owner --no-privileges.
Para cargar la base de datos de nuevo, haremos:
psql <database> < database_dump.sql
Comprobar tamaño de una base de datos
SELECT pg_size_pretty(pg_database_size('nombre_base_de_datos'));
Comprobar tamaño de una de las tablas de la base de datos
SELECT pg_size_pretty(pg_total_relation_size('nombre_tabla'));
Activar esquema para un determinado usuario
En ocasiones existen tablas en nuestra base de datos que nuestro usuario actual
no es capaz de ver cuando ejecuta \d. Esto sucede porque esas tablas son de un
esquema que nuestro usuario no tiene asignado en el search_path. Podemos hacer
un cambio para que pueda ver todo lo relacionado con ese esquema, así:
SET search_path = <nuevo_esquema>, public;