Está en la página 1de 7

Administración de Base de Datos Computación e Informática

PRACTICA 08

1. CREACIÓN DE USUARIOS
Los usuarios que se creen pueden ser designados para el uso de personal DBA como
también para la conexión de aplicaciones (web, de escritorio, entre otras).
Para crear un usuario debemos de ejecutar en la consola de PostgreSQL el comando
“CREATE USER” como se muestra a continuación, para este ejemplo crearemos 3
usuarios: appweb01 (usuario de una aplicación web), dba01 (usuario de un personal
DBA) y data01 (usuario de una aplicación de minería de datos)

postgres=# CREATE USER appweb01 WITH PASSWORD 'lotuyo' ;

postgres=# CREATE USER dba01 WITH PASSWORD 'lomio' ;

postgres=# CREATE USER data01 WITH PASSWORD 'lonuestro' ;

Es importante destacar que la contraseña debe de ir entre comillas simples como se


muestra en el ejemplo. Ahora para verificar la creación de usuarios, utilizaremos el
comando \du, que mostrará el listado de los usuarios creados en la base de datos.

Ejercicio 01
Vamos a poner un ejemplo de una tarea habitual de creación de usuarios, esta vez
desde una conexión creada desde el programa psql.

CREATE USER rene WITH PASSWORD 'mipass';


GRANT ALL PRIVILEGES ON DATABASE inmobiliaria to rene;
\q
https://reneluque.milaulas.com/ 1
Administración de Base de Datos Computación e Informática

GRANT ALL PRIVILEGES ON DATABASE otorga los privilegios CREATE,


CONNECT y TEMPORARY

Con estos comandos hemos creado un usuario llamado rene, se le ha dado todos los
privilegios sobre la base de datos inmobiliaria.

Ahora vamos a conectarnos con este usuario:

Realizamos una consulta con SELECT y creamos una Tabla “tablita”

Ejercicio 02

Crear usuario
Para crear un usuario lo haremos con el siguiente comando:
CREATE USER nano PASSWORD 'password';

Eliminar usuario
Si deseamos eliminar un usuario debemos ejecutar el siguiente comando:
DROP USER nano;

2. ALTER ROLE
El manejo de roles en PostgreSQL permite diferentes configuraciones, entre ellas
están:
 SUPERUSER/NOSUPERUSER. Super usuario, privilegios para crear bases
de datos y usuarios.
 CREATEDB/NOCREATEDB. Permite crear bases de datos.
 CREATEROLE/NOCREATEROLE. Permite crear roles.

https://reneluque.milaulas.com/ 2
Administración de Base de Datos Computación e Informática

 CREATEUSER/NOCREATEUSER. Permite crear usuarios.


 LOGIN/NOLOGIN. Este atributo hace la diferencia entre un rol y usuario. Ya
que el usuario tiene permisos para acceder a la base de datos a traves de un
cliente.
 PASSWORD. Permite alterar la contraseña.
 VALID UNTIL. Expiración de usuarios.

Para cambiar la configuracion de un usuario o rol debemos ejecutar el siguiente


comando.
ALTE ROLE <nombre del rol> WITH <opciones>

Asignar permisos de super usuario a un usuario


El permiso de super usuario es el más alto. Con este usuario se podrán administrar
todos los objetos del motor de base de datos.
Para asignar este privilegio a un rol lo hacemos con el siguiente comando:
ALTER ROLE rene WITH SUPERUSER;

Cambiar la contraseña de un usuario


Para cambiar la contraseña de un usuario es necesario ejecutar el siguiente comando:
ALTER ROLE rene WITH PASSWORD 'nuevopassword';

Crear una base de datos con un usuario específico como propietario


Todas las bases de datos que creamos con un usuario que tenga los privilegios
CREATEDB automáticamente asignan como propietario al usuario mismo. Si lo que
queremos crear es un usuario limitado, la forma de crearlo con una base de datos
específica será:
CREATE DATABASE bdweb WITH OWNER rene;

Asignar todos los permisos a un usuario a una base de datos existente


Cuando recién hemos creado un usuario y queremos darle permisos a una base de datos
existente, podemos utilizar el siguiente comando:
GRANT ALL PRIVILEGES ON DATABASE bdwebsite TO rene;

https://reneluque.milaulas.com/ 3
Administración de Base de Datos Computación e Informática

3. ASIGNACIÓN DE PRIVILEGIOS DE SUPERUSER


Al asignar privilegios de Superuser, el usuario que los reciba tendrá la potestad de
ejecutar comandos DDL (Data Definition Language), es decir podrá crear, modificar y
eliminar objetos en la base de datos, por lo que se sugiere no asignar este nivel tan alto
de permisos a una aplicación por ejemplo. Por lo general este privilegio lo posee el
personal DBA.
Para asignar privilegios de Superuser a un usuario debemos de ejecutar el siguiente
comando en la consola de PostgreSQL:

postgres=# ALTER USER dba01 SUPERUSER ;

Luego para verificar si el atributo fue otorgado correctamente, ejecutamos el comando


\du

4. CREACIÓN DE UN USUARIO DE SOLO LECTURA (READ ONLY USER)


Es un caso muy común que se requiera un usuario solo lectura, por lo general es
utilizado por aplicaciones de minería de datos, es decir que solo necesitan extraer data
por medio de consultas.

postgres=# ALTER USER data01 SET default_transaction_read_only = on ;

Asignamos permisos de conexión al usuario:

GRANT CONNECT ON DATABASE nombre_BD TO data01 ;

Ahora asignamos permisos de acceso al esquema en donde están las tablas que el
usuario necesita consultar:

GRANT USAGE ON SCHEMA nombre_esquema TO data01 ;

Podemos asignar permisos de SELECT sobre una tabla en específico o sobre todas las
tablas de un esquema.

Permiso de SELECT sobre una tabla:

https://reneluque.milaulas.com/ 4
Administración de Base de Datos Computación e Informática

GRANT SELECT ON nombre_tabla TO data01 ;

Permiso de SELECT sobre todas las tablas de un esquema:

GRANT SELECT ON ALL TABLES IN SCHEMA nombre_esquema TO data01;

5. ASIGNACION DE PRIVILEGIOS DE INSERT, UPDATE Y DELETE


Otro caso común es el de asignación de privilegios mixtos sobre diferentes objetos.
Esta es una tarea que permitirá tener un máximo control de qué exactamente puede o no
ejecutar un usuario.

Asignación de permisos de SELECT en una tabla especifica:

GRANT SELECT ON nombre_tabla TO nombre_usuario ;

Asignación de permisos de SELECT en todas las tablas de un esquema:

GRANT SELECT ON ALL TABLES IN SCHEMA nombre_esquema TO


nombre_usuario ;

Asignación de permisos de INSERT en una tabla especifica:

GRANT INSERT ON nombre_tabla TO nombre_usuario ;

Asignación de permisos de INSERT en todas las tablas de un esquema:

GRANT INSERT ON ALL TABLES IN SCHEMA nombre_esquema TO


nombre_usuario ;

Asignación de permisos de DELETE en una tabla especifica:

GRANT DELETE ON nombre_tabla TO nombre_usuario ;

https://reneluque.milaulas.com/ 5
Administración de Base de Datos Computación e Informática

Asignación de permisos de DELTE en todas las tablas de un esquema:

GRANT DELETE ON ALL TABLES IN SCHEMA nombre_esquema TO


nombre_usuario ;

Asignación de permisos de UPDATE en una tabla especifica:

GRANT UPDATE ON nombre_tabla TO nombre_usuario ;

Asignación de permisos de UPDATE en todas las tablas de un esquema:

GRANT UPDATE ON ALL TABLES IN SCHEMA nombre_esquema TO


nombre_usuario ;

Asignación de permisos de UPDATE en un capo específico de una tabla:

GRANT UPDATE (nombre_campo) ON nombre_tabla TO nombre_usuario ;

Asignación de permisos de SELECT y DELETE sobre una tabla:

GRANT SELECT, DELETE ON nombre_tabla TO nombre_usuario ;

Asignación de permisos de SELECT y DELETE en todas las tablas de un esquema:

GRANT SELECT, DELETE ON ALL TABLES IN SCHEMA nombre_esquema TO


nombre_usuario ;

Para listar los privilegios otorgados sobre objetos, ejecutamos el comando \dp, el
cual mostrará una salida como esta:

https://reneluque.milaulas.com/ 6
Administración de Base de Datos Computación e Informática

Donde data01=r significa que tiene permiso de lectura sobre la tabla. Mientras más
permisos se adicionen al usuario sobre el objeto, este cambiará, por ejemplo: con permisos
full de SELECT, INSERT, UPDATE y DELETE el usuario quedaría así: data01=arwd

Este es el significado de cada letra:


a: Permiso de INSERT o append
r: Permiso de SELECT o read
w: Permiso de UPDATE o write
d: Permiso de DELETE o delete

https://reneluque.milaulas.com/ 7

También podría gustarte