7.3. El administrador de postgres

Al terminar la instalación, en el sistema operativo se habrá creado el usuario postgres, y en PostgreSQL se habrá creado un usuario con el mismo nombre.

Él es el único usuario existente en la base de datos y será el único que podrá crear nuevas bases de datos y nuevos usuarios.

Normalmente, al usuario postgres del sistema operativo no se le permitirá el acceso desde un shell ni tendrá contraseña asignada, por lo que deberemos convertirnos en el usuario root, para después convertirnos en el usuario postgres y realizar tareas en su nombre:

yo@localhost:~$ su
Password:
# su - postgres
postgres@localhost:~$

El usuario postgres puede crear nuevas bases de datos utilizando el comando createdb. En este caso, le indicamos que el usuario propietario de la misma será el usuario postgres:

postgres@localhost:~$ createdb demo --owner=postgres
create database

 

Se ha creado el usuario yo con          permisos para crear bases de datos   y sin permisos para crear usuarios.  

El  usuario  postgres  puede  crear  nuevos  usuarios  utilizando  el  comando createuser:

postgres@localhost:~$ createuser yo
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER

 

Los siguientes comandos eliminan bases de datos y usuarios, respectivamente:

postgres@localhost:~$ dropdb demo
postgres@localhost:~$ dropuser yo

Es recomendable que se agreguen los usuarios necesarios para operar la instalación de PostgreSQL, y recurrir, así, lo menos posible al ingreso con postgres.

También disponemos de sentencias SQL para la creación de usuarios, grupos y privilegios:

demo=# create user marc password `marc21´;
CREATE USER
demo=# alter user marc password `marc22´;
ALTER USER
demo=# drop user marc;
DROP USER

Los grupos permiten asignar privilegios a varios usuarios y su gestión es sencilla:

create group migrupo;

Para añadir o quitar usuarios de un grupo, debemos usar:

alter group migrupo add user marc, ... ;
alter group migrupo drop user marc, ... ;