Campus Villahermosa
Depto.: Sistemas y Computación
2°. - Lo siguiente que haremos será seleccionar la base de datos “mysql” y abriremos el
espacio de trabajo SQL para poder empezar a realizar las consultas.
3°. - Antes de empezar a crear las cuentas de usuario y demás, comprobaremos en la
tabla USER de la base de datos mysql, que no haya ningún usuario ya creado con el mismo
nombre. Entonces, lo que haremos será seleccionar la base de datos y hacer un SELECT
a la tabla correspondiente:
Con la captura anterior demostramos y comprobamos que no haya ningún usuario creado
con el mismo nombre que crearemos los nuevos usuarios.
4°. - Para empezar con el desarrollo practico del reporte, lo que haremos será crear, vía
sentencias de SQL, las cuentas de usuarios que utilizaremos para nuestro proyecto.
Crearemos todas las cuentas de usuario en la misma declaración, esto nos permitirá ahorrar
tiempo y así tendremos un desarrollo más ordenado. Para crear las cuentas de los usuarios
(4 en total) usaremos la siguiente declaración:
CREATE USER 'man1'@'localhost' IDENTIFIED BY 'managerjc';
CREATE USER 'man2'@'localhost' IDENTIFIED BY 'managerfj';
CREATE USER 'rw_user1'@'localhost' IDENTIFIED BY 'rw_user1pass';
CREATE USER 'rw_user2'@'localhost' IDENTIFIED BY 'rw_user2pass';
Después de haber ejecutado las declaraciones anteriores, podemos observar que nos salen
los mensajes de que hemos creado correctamente los usuarios y que se nos ha devuelto
un conjunto vació de columnas. Esto sale porque hemos hecho inserción de registros.
En la captura de abajo se demuestra la correcta ejecución y creación de las cuentas de
usuario:
Ahora es el turno de hacer un SELECT de nueva cuenta a la tabla USER para comprobar
que aparecen los usuarios creados con sus contraseñas cifradas.
Como podemos observar las cuentas de usuario creadas no tienen asignado ningún
privilegio por ahora. Esto lo podemos comprobar viendo en cada una de las columnas la
letra “N”, que quiere decir que no hay privilegios asignados.
5°. - Ahora procederemos a crear los roles para asignarlos a cada una de las cuentas de
usuario, pero antes de asignárselos a los usuarios, haremos la asignación de privilegios a
los roles que ahora crearemos.
Crearemos un total de 3 roles, dichos roles serán los del administrador y dos más los cuales
serán de escritura y lectura. La declaración para crear los roles será la siguiente:
CREATE ROLE 'pw_manager', 'pw_read', 'pw_write';
Como podemos ver en la captura de arriba nos aparece un mensaje que nos dice que se
nos ha devuelto un conjunto vació, es decir, cero columnas. Los roles que hemos creado
se han hecho satisfactoriamente.
Existe una forma de comprobar que hemos creado los roles y es dando clic en el lado
izquierdo en la tabla que dice roles_mapping. Al darle clic se nos abrirá una vista que nos
muestra los roles que hemos creado con su respectivo nombre:
6°. - Ahora lo que nos falta es asignar los privilegios a los roles creados. Teniendo en
cuenta que usaremos un rol de administrador (el cual tendrá todos los privilegios), uno de
lectura (privilegio SELECT) y otro de escritura (privilegios INSERT, UPDATE Y DELETE).
Haremos la asignación en una sola declaración y usando las palabras reservadas correctas.
Lo haremos de la siguiente forma:
GRANT ALL ON product_warehouse. * TO 'pw_manager';
GRANT SELECT ON product_warehouse. * TO 'pw_read';
GRANT INSERT, UPDATE, DELETE ON product_warehouse. * TO 'pw_write';
En la captura de arriba mostramos con un recuadro azul la parte donde nos muestra que
se le han asignado todos los privilegios (ALL PRIVILEGES) al rol pw_manager, donde los
usuarios asignados a este rol serán los administradores de la base de datos del proyecto.
De igual forma, pero de otro color, mostramos en un recuadro naranja la consulta donde se
puede ver la descripción de la asignación de los privilegios de escritura (INSERT, UPDATE
Y DELETE) al rol pw_write.
De esta forma comprobamos que se han asignado correctamente los privilegios a los roles
establecidos para las cuentas creadas.
8°. - Ahora solo nos falta asignar los roles a cada una de las cuentas de usuario de la
base de datos. Para hacerlo usaremos la palabra reservada TO.
Haremos la asignación de roles de la siguiente forma:
GRANT 'pw_manager' TO 'man1'@'localhost';
GRANT 'pw_manager' TO 'man2'@'localhost';
GRANT 'pw_read' TO 'rw_user1'@'localhost';
GRANT 'pw_write' TO 'rw_user1'@'localhost';
GRANT 'pw_read' TO 'rw_user2'@'localhost';
GRANT 'pw_write' TO 'rw_user2'@'localhost';
Como podemos ver en la captura de arriba de nos muestran los mensajes que nos dicen
que se ha generado la consulta correctamente. Es decir, que hemos asignado los roles a
los usuarios para nuestra base de datos.
9°. - De igual manera que la comprobación de la asignación de privilegios a los roles,
podemos comprobar que se han asignado los roles a las cuentas de usuario de manera
correcta.
Para hacer esta comprobación vamos a usar las cláusulas SHOW GRANT FOR
‘nombre_usuario’. Definiendo en la parte nombre_usuario, el nombre de cada una de las
cuentas de usuario creadas para administrar nuestro proyecto de base de datos.
- Demostrando la asignación del rol pw_manager a la primera cuenta de
administrador ‘man1’@’localhost’:
SHOW GRANTS FOR ‘man1’@’localhost’;
Para que se pueda ver mejor hemos encerrado el resultado de la consulta donde se nos
muestra la asignación del rol pw_manager (rol del administrador) a la cuenta
‘man1’@’localhost’ (cuenta del administrador). Esta cuenta tendrá todos los privilegios
asignados a ese rol.
- Demostrando la asignación del rol pw_manager a la segunda cuenta de
administrador ‘man2’@’localhost’:
SHOW GRANTS FOR ‘man2’@’localhost’;
Observamos que al igual que la primera cuenta de administrador, se le ha asignado el rol
pw_manager, es decir, que la cuenta tiene todos los privilegios para trabajar con la base de
datos.