7.3. El administrador de postgres

7.3. El administrador de postgres Dataprix 27 Octubre, 2009 - 11:26

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

7.3.1. Privilegios

7.3.1. Privilegios Dataprix 27 Octubre, 2009 - 11:35

Cuando se crea un objeto en PostgreSQL, se le asigna un dueño. Por defecto, será el mismo usuario que lo ha creado. Para cambiar el dueño de una tabla, índice, secuencia, etc., debemos usar el comando alter table. El dueño del objeto es el único que puede hacer cambios sobre él, si queremos cambiar este comportamiento, deberemos asignar privilegios a otros usuarios.

Los privilegios se asignan y eliminan mediante las sentencias grant y revoke. PostgreSQL define los siguientes tipos de operaciones sobre las que podemos dar privilegios:

select, insert, update, delete, rule, references, trigger, create, temporary, execute, usage, y all privileges.

 

Presentamos algunas sentencias de trabajo con privilegios, que siguen al pie de la letra el estándar SQL:

 

grant all privileges on proveedores to marc;
grant select on precios to manuel;
grant update on precios to group migrupo;
revoke all privileges on precios to manuel;
grant select on ganacias from public;