No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Compra acceso a todo Platzi por 1 a帽o

Antes: $249

Currency
$209/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

16D
2H
58M
17S
Curso de PostgreSQL

Curso de PostgreSQL

Oswaldo Rodr铆guez Gonz谩lez

Oswaldo Rodr铆guez Gonz谩lez

Creaci贸n de Roles

14/32
Recursos

Aportes 126

Preguntas 23

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

sin duda alguna, beco ha hecho que deteste la interfaz y ame la consola鈥 鈥渓a consola es tu amiga鈥

ROLES

Que puede hacer un ROLE

  • Crear y Eliminar
  • Asignar atributos
  • Agrupar con otros roles
  • Roles predeterminados
-- Ver las funciones del comando CREATE ROLE (help)
\h CREATE ROLE;

-- Creamos un ROLE (consultas -> lectura, insertar, actualizar)
CREATE ROLE usuario_consulta;

-- Mostrar todos los usuarios junto a sus atributos
\dg

-- Agregamos atributos al usuario o role
ALTER ROLE  usuario_consulta WITH LOGIN;
ALTER ROLE  usuario_consulta WITH SUPERUSER;
ALTER ROLE  usuario_consulta WITH PASSWORD'1234';

-- Elimanos el usuario o role
DROP ROLE usuario_consulta;

-- La mejor forma de crear un usuario o role por pgadmin
CREATE ROLE usuario_consulta WITH
  LOGIN
  NOSUPERUSER
  NOCREATEDB
  NOCREATEROLE
  INHERIT
  NOREPLICATION
  CONNECTION LIMIT -1
  PASSWORD'1234';

--Para obtorgar privilegios a nuestro usuario_consulta
GRANT INSERT, SELECT, UPDATE ON TABLE public.estacion TO usuario_consulta;
GRANT INSERT, SELECT, UPDATE ON TABLE public.pasajero TO usuario_consulta;
GRANT INSERT, SELECT, UPDATE ON TABLE public.trayecto TO usuario_consulta;
GRANT INSERT, SELECT, UPDATE ON TABLE public.tren TO usuario_consulta;
GRANT INSERT, SELECT, UPDATE ON TABLE public.viaje TO usuario_consulta;

Usuarios Linux, a nosotros no nos sale la opcion de configurar el inicio de psql con el usuario todo eso se tiene que hacer a trav茅s de este comando

psql -h <host> -d <base de datos> -U <usuario> -p <port>

Mi resumen de la clase

Desde sqlshell podemos crear roles, los roles son independiente de la base de datos, el comando para crear un rol es CREATE ROLE o CREATE USER, despu茅s de la versi贸n 9.3 de postgres ambos comandos hacen lo mismo, en este ejemplo usaremos CREATE ROLE

Podemos ver todas las caracter铆sticas que tiene la sentencia CREATE ROLE con \h CREATE ROL

Bien, creemos un rol que tenga la capacidad de hacer login y le asignaremos una contrase帽a.
Es muy bueno tener 2 roles diferentes, uno podria ser el usuario postgres que me permite crear bases de datos, borrar tablas, etc, y otro que me sirva 煤nicamente para insertar, consultar y crear tablas pero no de eliminar o borrar bases de datos

CREATE ROLE usuario_consulta;

Al crearlo as铆, este no tendr谩 contrase帽a y va a poseer todas las caracter铆sticas predeterminadas de postgres

Si queremos ver todos los usuarios creados lo podemos hacer con el comando \dg


Ahora queremos que este rol que acabamos de crear tenga acceso a poder acceder a la base de datos, as铆 que vamos a editarlo

ALTER ROLE usuario_consulta WITH LOGIN; --Para que pueda logearse

Y luego le asignamos una contrase帽a

ALTER ROLE usuario_consulta WITH PASSWORD 'nuestraContrase帽a';

Ahora ya podemos acceder a la consola con este rol


Con el comando DROP ROLE nombre_rol, podemos eliminar roles

En ubuntu y sus derivados para ingresar a un usuario por consola, se debe ingresar:

psql --host=localhost --dbname=postgres --username=usuario_consulta```

Creaci贸n de Roles

.
Se pueden crear o eliminar otros roles, as铆 como asignar atributos(hacer login, acceder a base de datos, permisos para escribir o eliminar tablas, etc).
.
Tambi茅n es posible agrupar diferentes roles.
.
Existe el rol predeterminado 鈥楶ostgres鈥 que es con el que iniciamos al instalar este motor de BBDD. Lo ideal es generar nuestro propio superusuario, de lo contrario, Postgres ser铆a el 煤nico superusuario y eso podr铆a da帽ar nuestra informaci贸n.
.
Lo ideal es crear un usuario con los niveles de seguridad indicados para nuestra BBDD y tablas y continuar trabajando con el nuevo usuario.
.
Los roles son independientes de las BBDD, por lo que se crean desde cualquier usuario con permisos, en este caso, utilizando el usuario Postgres.
.
CREATE ROLE == CREATE USER
.
Se pueden generar usuarios desde la consola, para ver los comandos disponibles podemos ver en la ayuda con \h.

\h CREATE ROLE

CREATE ROLE name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

si quieren usar el modo oscuro para que no se da帽en la vista van a File > Preferences > Miscellaneous > Themes

Los usuarios y sus roles son una parte importante de la seguridad de la base de datos. Con ayuda de los usuarios adicionales y los grants otorgados, se puede determinar el nivel de acceso a ciertos objetos en la base de datos; adem谩s, se puede crear procesos de monitoreo (triggers) que permiten crear una bit谩cora de seguimiento de operaciones de los usuarios. Creando as铆 una relaci贸n de: Quien se conecta -desde donde - que consulta.

La gestion de usuraios es una labor muy importante para la seguridad de la informacion. Es recomendable tener un inventario detallado de los roles y usuarios creados, asi contar con una superficie de vulnerabilidades por accesos otorgados.

CREATE ROLE usuario_consulta;
CREATE USER usuario_consulta;
ALTER ROLE usuario_consulta WITH LOGIN;
ALTER ROLE usuario_consulta WITH SUPERUSER;
ALTER ROLE usuario_consulta WITH PASSWORD 'Esta es una contrase帽a';
DROP ROLE usuario_consulta;
GRANT INSERT, SELECT, UPDATE ON TABLE public.estacion TO usuario_consulta;
GRANT INSERT, SELECT, UPDATE ON TABLE public.pasajero TO usuario_consulta;
GRANT INSERT, SELECT, UPDATE ON TABLE public.trayecto TO usuario_consulta;
GRANT INSERT, SELECT, UPDATE ON TABLE public.tren TO usuario_consulta;
GRANT INSERT, SELECT, UPDATE ON TABLE public.viaje TO usuario_consulta;

Es un golpe duro pasar de Mysql a PostgreSQL,se siente la diferencia mucho jajaj

Para, los que llegaron a containerizar el PostgreSQL.
Deben usar el comando:

docker exec -it <container_name> bash

Luego, para entrar a la base de datos,con el siguiente comando:

psql -U <role> -d <database_name>  -W

驴Podr铆a usuario_consulta siendo en ese momento SUPERUSER eliminar a postgres?

Creaci贸n de Roles

Los roles sirven para dar priviligios a un usuario en una base de datos. Por defecto el rol que tienen las tablas asignadas es el rol de 鈥減osgres鈥, el cual tiene acceso total a todas las acciones. Es peligroso seguir usando este rol porque se podr铆a borrar toda la base de datos.

  • Crear rol o usuario (es lo mismo): CREATE ROLE nombre_rol / CREATE USER nombre_usuario
  • Listado de usuarios: \dg

Le damos acceso a conectarse: ALTER ROLE usuario_consulta WITH LOGIN;

Le damos el privilegio de super usuario: ALTER ROLE usuario_consulta WITH SUPERUSER;

Le asignamos una contrase帽a ALTER ROLE usuario_consulta WITH PASSWORD 'etc123' No usar una contrase帽a como la de prueba en un entorno real, es solo una prueba

  • Eliminar rol: DROP ROLE nombre_rol
CREATE ROLE usuario_consulta WITH
  LOGIN
  NOSUPERUSER
  NOCREATEDB
  NOCREATEROLE
  INHERIT
  NOREPLICATION
  CONNECTION LIMIT -1
  PASSWORD 'xxxxxx'; --contrase帽a oculta
COMMENT ON ROLE usuario_consulta IS 'Este usuario solo podr谩 consultar datos';

Modificando persmisos en tablas para un rol:

GRANT INSERT, SELECT, UPDATE ON TABLE public."Estaciones" TO usuario_consulta;

GRANT INSERT, SELECT, UPDATE ON TABLE public."Pasajeros" TO usuario_consulta;

GRANT INSERT, SELECT, UPDATE ON TABLE public."Trayectos" TO usuario_consulta;

GRANT INSERT, SELECT, UPDATE ON TABLE public."Trenes" TO usuario_consulta;

GRANT INSERT, SELECT, UPDATE ON TABLE public."Viajes" TO usuario_consulta;

Super profesional y sencillo

NO ME SALE LA DIAGONAL ESA DEL PROFE ME SALE /DG ! NESECITO SOLUCION

Roles en PostgreSQL


En PostgreSQL, los roles son entidades de seguridad que permiten agrupar usuarios y controlar los permisos de acceso a los objetos de la base de datos.

Cada rol puede tener permisos de inclusi贸n, exclusi贸n, modificaci贸n y consulta en objetos espec铆ficos de la base de datos, como tablas, vistas, 铆ndices y procedimientos almacenados.

Hay dos tipos de roles en PostgreSQL: roles de usuario y roles de grupo

  • Un rol de usuario es una entidad que se puede usar para iniciar sesi贸n en la base de datos y acceder a los objetos de la base de datos con permisos espec铆ficos.
  • Un rol de grupo es una entidad que agrupa otros roles, incluidos roles de usuario y otros roles de grupo. Los roles de grupo facilitan la administraci贸n de permisos, ya que permite asignar permisos a un grupo de usuarios en lugar de a cada usuario individualmente.

Para crear un nuevo rol en PostgreSQL, puede usar el siguiente comando:

CREATE ROLE nombre_rol [OPTIONS];

		|	SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

Donde nombre_rol es el nombre del nuevo rol y las opciones incluyen opciones adicionales como la contrase帽a, la fecha de expiraci贸n, etc.

Para ver el listados de los roles podemos hacer uso del comando \dg

Para agregar opciones al role ejecutamos el siguiente comando:

ALTER ROLE usuario_consulta WITH [OPTIONS]

Para eliminar un rol ejecutamos el siguiente comando:

DROP ROLE nombre_rol

Para asignar permisos a un rol, puede usar el siguiente comando:

GRANT permisos ON objeto_de_base_de_datos TO nombre_rol;

Donde permisos es una lista de permisos (por ejemplo, SELECT, INSERT, UPDATE, DELETE), objeto_de_base_de_datos es el nombre del objeto de base de datos al que se est谩n asignando permisos (por ejemplo, una tabla o una vista) y nombre_rol es el nombre del rol al que se est谩n asignando permisos.

En Linux asi se cambia de usuario en la terminal

psql -d nombre_de_baseDeDatos -U tu_usuario_aqui

Y asi logras ver que usuario esta conectado a la base de datos:

\conninfo
psql -d postgres -U usuario_consulta -h localhost

Para usuarios de linux deben especificar el nombre de la base de datos a la que se van a conectar (-d postgres).

Desde que empece a estudiar siempre le hab铆a tenido miedo a la consola y siempre prefer铆a usar las interfaces gr谩ficas pero este curso me ha hecho amar la consola, ya que veo que todo es mas sencillo y r谩pido desde ah铆.

Coincido que la consola es m谩s c贸moda para este paso.

CREATE ROL

Vaya que he escuchado sobre los roles en la terminal pero no lo habia entendido para que quer铆a hasta que este video me ense帽贸 una gran lecci贸n. Tanto en la terminal como en la interfaz gr谩fica son muy amigables a la hora de crearlo.

Creaci贸n de roles

PostgreSQL officially refers to users as roles

Como cualquier objeto en la BD tiene la capacidad de se creados y eliminados. Atributos -> Eliminar tablas. Y existe de manera predeterminada de postgreSQL

Roles son idependientes a las bases de datos, as铆 que no necesitamos saltar de BD para crear roles

CREATE ROLE - DROP ROLE

Crear un usuario - rol con los niveles de seguridad necesario para nuestras actividades

postgres=# \h CREATE ROL
Command:     CREATE ROLE
Description: define a new database role
Syntax:
CREATE ROLE name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

Pasa saber que usuarios - roles tenemos

\dg
postgres=# 

                                       List of roles
    Role name     |                         Attributes                         | Member of
------------------+------------------------------------------------------------+-----------
 postgres         | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 usuario_consulta | Cannot login                                               | {}

Modificar el rol

ALTER ROLE nombre with atributo;
postgres=# ALTER ROLE usuario_consulta WITH LOGIN;
ALTER ROLE
postgres=# \dg
                                      List of roles
   Role name     |                         Attributes                         | Member of
------------------+------------------------------------------------------------+-----------
postgres         | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
usuario_consulta |                                                            | {}
postgres=# ALTER ROLE usuario_consulta WITH SUPERUSER;
ALTER ROLE
postgres=# \dg
                                       List of roles
    Role name     |                         Attributes                         | Member of
------------------+------------------------------------------------------------+-----------
 postgres         | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 usuario_consulta | Superuser                                                  | {}

Borrar Role

postgres=# drop role usuario_consulta;
DROP ROLE
postgres=# \dg
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

Colocar en own: el "usuario consulta" es un error ya que lo que estamos haciendo es darle el permiso de hacer todo lo que quiera, la mejor manera es directamente sobre "Tables" en "grand wizard"

Un comando que encontr茅 y me pareci贸 煤til: c贸mo saber cu谩l es mi usuario actual:

<conninfo>

Se obtiene algo como:

<You are connected to database 鈥減ostgres鈥 as user 鈥渦suario_consulta鈥 on host 鈥渓ocalhost鈥 (address 鈥127.0.0.1鈥) at port 鈥5432鈥.>

El video tiene un error.
En primer lugar, un rol con el atributo INHERIT tendr谩 autom谩ticamente los privilegios de los roles de EL GRUPO del que es miembro, incluidos los privilegios heredados por ese rol.

No como menciona 茅l que va a heredar los permisos del ROLE que lo est谩 creando 馃 que en este caso es postgres

Preguntas que me contest茅 yo mismo:

  • En la venta de grant wizard - secci贸n de privilegios:
    la 2 columna de 鈥淲ITH GRANT options鈥 permite al usuario brindarle ese permiso a otro usuario. si no se selecciona, ser谩 un permiso 煤nico de el.

  • Cuando ingreses con el nuevo rol e intentes insertar un registro probablemente te salga este error:

ERROR: permission denied for sequence鈥
Soluci贸n: Schemas > Public > Sequences > Grant Wizard (clic derecho) > asignar permiso de USAGE

\dg o \du para listar usuarios roles

listo, el curso es muy practico y fluido, me parece muy buena practica dejar, permisos restringidos dependiendo de las necesidades de los usuarios

--//////////////////
--13. Roles
--/////////////////

--Como usar el comando  CREATE ROL
\h CREATE ROL  ;

--Crear un role
CREATE ROLE usuario_consulta;
-- Consultar los usuarios dentro de la bases de datos;
/dg
--Modificar Role
ALTER ROLE  usuario_consulta WITH LOGIN;
ALTER ROLE  usuario_consulta WITH SUPERUSER;
ALTER ROLE  usuario_consulta WITH PASSWORD '1234';

--Eliminar usuario
DROP ROLE usuario_consulta;

CREATE ROLE usuario_consulta WITH
  LOGIN
  NOSUPERUSER
  INHERIT
  NOCREATEDB
  NOCREATEROLE
  NOREPLICATION
  ENCRYPTED PASSWORD 'md57d24e489563fca3e9842fd8407d58dbf';

--obtorgar privilegios
GRANT INSERT, SELECT, UPDATE ON TABLE public.estacion TO usuario_consulta;

GRANT INSERT, SELECT, UPDATE ON TABLE public.pasajero TO usuario_consulta;

GRANT INSERT, SELECT, UPDATE ON TABLE public.trayecto TO usuario_consulta;

GRANT INSERT, SELECT, UPDATE ON TABLE public.tren TO usuario_consulta;

GRANT INSERT, SELECT, UPDATE ON TABLE public.viaje TO usuario_consulta;

Excelente explicaci贸n.

Dar los privilegios 鈥榰pdate鈥,鈥榮elect鈥 y 鈥榠nsert鈥 a un user sobre todas las tablas con schema 鈥榩ublic鈥 dentro de una base de datos
postgres=# grant update, select, insert on all tables in schema public to user_name;

en la consola es mas facil

Me est谩 empezando a gustar POSTGRES

ROLES \- Ver todos los roles : \dg \- Crear rol : CREATE ROLE usuario\_consulta; \- Asignar persimos : ALTER ROLE usuario\_consulta WITH SUPERUSER; ALTER ROLE usuario\_consulta WITH PASSWORD 'Esta es una contrase帽a'; \- Desde pgAdmin ![](https://static.platzi.com/media/user_upload/imagen-7398b6c1-1489-4e9b-b66f-d13ba61ef713.jpg) ASIGNACION DE PERMISOS -![](https://static.platzi.com/media/user_upload/imagen-0b69fc15-93b8-45c7-afa7-d25370efcd7e.jpg) Grant Wizard

En un sistema de gesti贸n de bases de datos como PostgreSQL o MySQL, puedes crear un rol llamado 鈥渆ditor鈥 con privilegios para modificar datos y luego asignar ese rol a varios usuarios. Esto asegura que todos los usuarios con el rol 鈥渆ditor鈥 tengan los mismos privilegios predefinidos.
https://www.postgresql.org/docs/current/sql-createrole.html

Les comparto la Documentaci贸n de la creaci贸n de roles dentro de postgres 馃槂

En caso de proveer servicios a otros proyectos es sumamente importante crear un rol por cada servicio dependiendo de los requerimiento
HOLA UNA CONSULTA, AL MOMENTO DE HACER LA CONSULTA EN \dg en sql shell la consola me regresa no la tabla como pasa en el ejemplo si no digamos que como el codigo css de la misma, y esta bastante confuso para mi, tienen idea de donde puedo configurar la consolosa para que me regrese las tablas y no su codigo, adjunto foto![](https://static.platzi.com/media/user_upload/CSS%20SQLBASH-785c3f29-f0d0-46e8-b1c8-ec5f27c9d98d.jpg)

Cuando va a quitar el color rojo? ;_;

Esta clase me inspir贸, No ubico donde darle un superlike!

Es muy importante la creaci贸n de roles cuando hay varios usuarios que tienen acceso a la base de datos

14. Creaci贸n de Roles

Qu茅 puede hacer un ROL

  • Crear y eliminar
  • Asignar atributos
  • Agrupar con otros roles
  • Roles predeterminados

PgAdmnin es muy bacana para la administraci贸n de las DB鈥檚. Me parece muy intuituva y amigable. Aparte que su tema oscuro me hace descansar la vista. BUEN脥SIMA.

Los roles son fundamentales para un buen trabajo en equipo. Muy buena la clase.

PostgreSQL officially refers to users as roles

en esta clase aprendimos

  • como crear usuario desde la consola
  • como crear roles(usuarios) por pg admin

la creaci贸n de roles en PostgreSQL se utiliza para definir permisos y restricciones de seguridad para los usuarios y grupos de usuarios que acceden a la base de datos. Los roles se crean utilizando el comando CREATE ROLE, y se otorgan permisos y restricciones de seguridad utilizando los comandos GRANT y ALTER ROLE.

Dar permiso a un role para todas las tablas de una base de datos, de manera masiva

Lo bueno es que en el minuto 18:00 hasta el final, puedes consultar la creaci贸n de todas las columnas de las tablas en el ejercicio de l reto y as铆 modificar si estas alineado con el ejercicio.

EXCELENTE CLASE 100/100

Muy clara la forma en que explica en ambas herramientas!

Los roles, tienen la capacidad de ser creados y eliminados. Un rol puede crear y eliminar otros roles. Tienen atributos (restricci贸n de tareas), son agrupados en un conjunto global de permisos, y existen de manera predeterminada.

la explicaci贸n de cada clase es muy clara.

Excelente clase. Es bueno saber que existe diferentes niveles de seguridad que podemos aplicar a la BD

Los roles permiten:

  • Crear y eliminar
  • Asignar atributos
  • Agrupar con otros roles
  • Roles predeterminados
    Dependiendo de los permisos con los que estos cuente, pueden ejecutar diferentes acciones sobre la base de datos como actualizaciones, inserciones, consultas, etc.

Usuarios Linux, copiar y pegar esto en su consola
psql --host=localhost --dbname=postgres --username=usuario_consulta

Luego pedir谩 el password y lograr谩n acceder

la verdad la consola no que me guste mucho. Prefiero la interfaz馃檲馃檲馃檲

Informaci贸n resumida de esta clase
#EstudiantesDePlatzi

  • Existen roles dentro de PostgreSQL, estos lores pueden crear, modificar y eliminar datos, as铆 que es bueno crear un usuario con ciertos niveles de seguridad. Los roles son independientes de la base de datos

  • Una buena pr谩ctica es usar un creador de contrase帽as aleatorio para que sea m谩s dif铆cil el robo de datos

  • El grupo de permisos y el usuario se diferencia por el icono

  • Depende de nuestro proyecto debemos asignarle ciertos permisos a los roles

  • Este rol con ciertos permisos son los que le compartimos al equipo y as铆 tenemos una capa m谩s de seguridad

Aqu铆 dejo informaci贸n importante tanto resumen como adicional, especialmente de los grupos de usuarios que son muy importantes (leer hasta el final)

Los roles son los usuarios que tenemos creados en la base de datos. Estos roles tienen distintos atributos y privilegios. Hasta ahora hemos usado el usuario postgres que es el de m谩s altos privilegios, vamos a crear uno nuevo.

Para crear un nuevo usuario:

CREATE ROLE usuario_consulta LOGIN PASSWORD '123456'

Hay que tener en cuenta que si se hace CREATE USER se crea con LOGIN por defecto.

En linux para conectarnos con otro usuario debemos usar este comando:

psql -h <servidor> -d <nombre_db> -U <nombre_usuario> -p <puerto>

por ejemplo:

psql -h localhost -d transportes -U usuario_consulta -p 5432

Los roles o usuarios tienen distintos atributos ya vimos algunos como son login y password. Aqu铆 est谩n los dem谩s: atributos

Privilegios:

Los usuarios a pesar de que ya tienen acceso a logearse y pueden acceder a bases de datos no pueden realizar ninguna acci贸n sobre estas si es que no se les da los privilegios. Si nos ocnectamos como el usuario_consulta en la base de datos transportes e intentamos hacer alguna consulta dar谩 error de permisos

PAra dar privilegios a un usuario por consola:

GRANT SELECT
ON ALL TABLES
IN SCHEMA "public"
TO usuario_consulta;

Este dar谩 al usuario el privilegio de SELECT en todas las tablas.

Para revocar permisos por consola:

REVOKE SELECT
ON ALL TABLES
IN SCHEMA "public"
FROM usuario_consulta;

Grupos de roles:

Digamos que tengamos que crear 2 usuarios, uno con permisos de solo ver y otro que pueda ver y editar, en este caso tendr铆amos que crear los roles y asignarles los privilegios a cada uno. Podemos optimizar esto creando grupos de roles donde le indicaremos los los privilegios que van a tener y cuando creamos un usuario nuevo podemos hacer que herede estos mismos permisos.

  1. Creamos el grupo de role
CREATE ROLE lectura; 
  1. Le asignamos los privilegios
GRANT SELECT ON ALL TABLES
IN SCHEMA "public"
TO lectura;
  1. Creamos usuario de solo consulta
CREATE ROLE usuario_consulta2 LOGIN PASSWORD 'visita';
  1. Lo asignamos al grupo lectura
GRANT lectura TO usuario_consulta2;

De esta manera ya el usuario tendra los privilegios de SELECT que tiene lectura.

excelente curso.
隆por favor cambie el color!

Para trabajar es aconsejable usar distintos roles (usuarios) con distintos niveles de privilegios.
Tenemos al rol por default postres, que generalmente tiene todos los privilegios.
Podemos crear nuevos roles que hereden (grantee) del usuario postgres (grantor) sus privilegios, pero limitando algunos. Como DELETE y DROP. Este nuevo rol se lo podemos dar a un equipo de trabajo que no queremos que elimine data de la DB.
De esta manera agregamos una capa de seguridad a nuestro trabajo

Me gusto mucho esta clase, no sabia que se pod铆a dar permisos tan espec铆ficos a los usuarios contra las tablas

En caso de que deseen configurar los permisos desde sus consolas podr谩n usar el siguiente comando:
GRANT <Nombre del permiso> ON <Nombre de la tabla> TO <Nombre Usuario>
Ejemplo:
GRANT SELECT ON passenger TO tester

Si desean asignarles todos los permisos deberan escribir lo siguiente:
GRANT ALL ON <Nombre de la tabla> TO <Nombre Usuario>
Ejemplo:
GRANT ALL ON train TO tester

  • Crear y Eliminar
  • Asignar atributos
  • Agrupar con otros roles
  • Roles predeterminados

Listo usuario creado y listo para el trabajo.

Otra forma de dar acceso a todas las tablas de un esquema:

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA schema_name TO username;

To get information about current connection from the psql command prompt:

\conninfo

This displays more information, though.

To change user:

\c - a_new_user

鈥-鈥 substitutes for the current database.

To change database and user:

\c a_new_database a_new_user

The SQL command to get this information:

SELECT current_user;

En Ubuntu, para acceder a la base de datos 鈥渢ransporte鈥 desde otro usuario que no sea el admin postgres:

psql -U usuario_consulta -W -h localhost transporte.

No se si les paso pero sucede el siguiente problema y es que cuando escrib铆a la sentencia

postgres-# ALTER ROLE usuario_consulta WITH LOGIN;
ERROR:  error de sintaxis en o cerca de 芦ALTER禄
L脥NEA 2: ALTER ROLE usuario_consulta WITH LOGIN;
         ^

y el error estaba en que entre # y el ALTER debe haber un espacio

postgres=#  ALTER ROLE usuario_consulta WITH LOGIN;
ALTER ROLE
postgres=#

Me gusta como fluye el curso. Las explicaciones son claras y la estructura del proyecto es entendible.
.

Quitar todos los privilegios a un user de todas las tablas con schema 鈥榩ublic鈥 dentro de una base de datos:
postgres=# revoke all privileges on all tables in schema public from transport_manager;

Es muy intersante tener los diversos usuarios para la administraci贸n de la base de datos, asi se le agrega una capa de seguridad mayor al proyecto.

PostgreSQL gestiona los permisos de acceso a la base de datos utilizando el concepto de roles (roles) . Un rol puede considerarse como un usuario de la base de datos o un grupo de usuarios de la base de datos

Los roles tienen atributos y privilegios;

Los roles de la base de datos est谩n conceptualmente completamente separados de los usuarios del sistema operativo. En la pr谩ctica, puede ser conveniente mantener una correspondencia, pero esto no es obligatorio

Cada conexi贸n al servidor de la base de datos se realiza en nombre de alg煤n rol en particular, y este rol determina los privilegios de acceso inicial para los comandos emitidos en esa conexi贸n

Los roles tienen atributos y privilegios; los atributos se pueden ver como 驴Cu谩l usuario se est谩 conectando a la bases de datos? y los atributos se pueden visualizar como 驴Cu谩les acciones pueden ejecutar el rol que se est谩 conectando?

Algunos de los privilegios de los roles son: SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER

Algunos de los atributos: SUPERUSER|CREATE ROLE|DROP ROLE|PASSWORD|DATABASE CREATION

Los roles pueden ser agrupados en un conjuntos de privilegios o permisos.

Para arrancar el sistema de base de datos, un sistema reci茅n inicializado siempre contiene un rol predefinido. Este rol es siempre un "superusuario" y, de manera predeterminada (a menos que se modifique al ejecutar initdb )

Crear superusuario: ALTER ROLE ... WITH SUPERUSER;

Documentaci贸n en la p谩gina oficial: <https://www.postgresql.org/docs/16/sql-createrole.html>

Es una buena pr谩ctica crear un rol que tenga los privilegios CREATEDB y CREATEROLE, pero que no sea un superusuario,y luego usar este rol para toda la administraci贸n de rutina de bases de datos y roles. Este enfoque evita los peligros de operar como superusuario cuando no se deba

Se puede crear los roles independiente a las bases de datos.

\h CREATE ROLE, para ver como usar el comando.

CREATE USER es un alias de CREATE ROL. Algo m谩s para agregar para verificar s铆 un usuario a sido creado podemos utilizar la instrucci贸n: \dg

ALTER ROLE name_rol WITH atributo_name, para la modificaci贸n de un rol

Para crear un rol, realizamos clic derecho en la opci贸n Login/Group Roles... Luego de ello

Para crear un rol, realizamos clic derecho en la opci贸n Login/Group Roles-> Create-> Login Role

En la Pesta帽a General tenemos el campo name d贸nde el nombre del rol y podemos colocar un comentario.

Pesta帽a Definition se coloca la contrase帽a y tambi茅n se puede agregar una fecha de expiraci贸n de la cuenta o tambi茅n un limite de conexi贸n.

En la pesta帽a privilegios van los atributos que llevar谩 el rol, aqu铆 tenemos que tener en cuenta que al dejar la opci贸n de Ingerit right from parent esta opci贸n permite consultar y modificar las tablas de la bd

En la pesta帽a Membership sirve para cuando hayamos creado un grupo de permisos y queremos hacer que este rol sea de ese grupo de permisos

En la pesta帽a Parameters podemos personalizar variables y atributos. Ejemplo podemos limitar la cantidad de memoria que va a usar la base de datos cuando 茅l se conecte Si queremos que sea un usuario que de pronto no tenga el acceso al 100% de la CPU o al 100% la ram

En la pesta帽a Security se pueden asignar etiquetas a los roles para distinguir m谩s f谩cilmente que roles tienen cierto grado de permisos y se haga m谩s f谩cil el identificar por etiquetas.