-
Conéctese al servidor PostgreSQL:
Conéctese al servidor PostgreSQL utilizando la herramienta de línea de comandos psql como usuario postgres.
sudo -u postgres psql
-
Conéctese a la base de datos reporting_db:
Conéctese a la base de datos reporting_db:
\c reporting_db
-
Cree un usuario y otorgue membresía al reporting_role:
Creemos un nuevo usuario llamado report_user. Luego, otorgaremos a este usuario membresía al rol reporting_role. Esto significa que report_user heredará los privilegios otorgados a reporting_role.
CREATE USER report_user;
GRANT reporting_role TO report_user;
Debería ver la siguiente salida:
CREATE ROLE
GRANT ROLE
-
Configure PostgreSQL para Autenticación sin Contraseña:
Por defecto, PostgreSQL utiliza la autenticación peer, que puede causar problemas de conexión en este laboratorio. La cambiaremos a trust para simplificar el acceso para report_user.
Primero, salga del shell de psql:
\q
Ahora, modifique el archivo pg_hba.conf para cambiar el método de autenticación. El comando sed a continuación hará una copia de seguridad del archivo original como pg_hba.conf.bak y reemplazará peer con trust para las conexiones locales.
sudo sed -i.bak 's/^local\s\+all\s\+all\s\+peer/local all all trust/' /etc/postgresql/14/main/pg_hba.conf
Recargue PostgreSQL para aplicar los cambios:
sudo service postgresql reload
-
Inserte datos en la tabla sales_data:
Vuelva a conectarse a la base de datos como usuario postgres.
sudo -u postgres psql -d reporting_db
Inserte algunos datos de ejemplo en la tabla sales_data para fines de prueba.
INSERT INTO sales_data (product, amount) VALUES ('Laptop', 1200.00), ('Mouse', 25.00), ('Keyboard', 75.00);
Debería ver la siguiente salida:
INSERT 0 3
Salga del shell de psql.
\q
-
Conéctese a la base de datos reporting_db como report_user:
Abra una nueva ventana de terminal y use el siguiente comando:
psql -d reporting_db -U report_user
Se conectará a la base de datos como report_user sin que se le solicite una contraseña.
-
Pruebe los privilegios:
Ahora, intente seleccionar datos de la tabla sales_data:
SELECT * FROM sales_data;
Debería ver los datos que insertó:
id | product | amount
----+----------+--------
1 | Laptop | 1200.00
2 | Mouse | 25.00
3 | Keyboard | 75.00
(3 rows)
Si ve esta salida, significa que report_user tiene el privilegio SELECT en la tabla sales_data, que se otorgó a través del rol reporting_role.
Salga del shell de psql.
\q