[ Foro de SQL (y MySQL) ]

script mysql para crear usuarios

18-Feb-2024 00:52
Invitado (Martin)
0 Respuestas

Hola gente! Como van!?
Les comento mi caso:
estoy desarrollando una aplicación usando MySql (WorkBench 8 Community en desarrollo y MariaDB
10.6.16-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04 en producción)

En el sistema hay diferentes usuarios del sistema.
Lo que deseo poder hacer por motivos de seguridad y buenas practicas, es que cada usuario
tenga además un usuario de MySql propio. El usuario es creado en alguna instancia desde el sistema mismo;
el sistema tiene su usuario propio para hacer sus ejecuciones.
En el servidor MySql para el sistema solo implemento Stored Procedures; hay un usuario del sistema y un 'role'
creado para los 'usuarios', al cual le asigno permisos de ejecución sobre los SPs correspondientes; de manera que los usuarios mysql en si no pueden hacer mas que ejecutar SPs creados y asignados.
Tengo un SP que realiza el "alta usuario"
Para ello utilizo en la parte de 'comandos de manipulación' una variable literal concatenada y prepared statement de esta forma:
SET @sql_dinamico = CONCAT("CREATE USER '",_Email,"'@'localhost' IDENTIFIED BY '",_Clave,"'");
PREPARE crear_usuario FROM @sql_dinamico;
   EXECUTE crear_usuario;
set @err = @err + @@error_count;    
   DEALLOCATE PREPARE crear_usuario;    
   FLUSH PRIVILEGES;
   
   SET @sql_dinamico = CONCAT("GRANT 'ROL_USUARIO' TO '",_Email,"'@'localhost'");
PREPARE asignar_rol FROM @sql_dinamico;
   EXECUTE asignar_rol;
set @err = @err + @@error_count;    
   DEALLOCATE PREPARE asignar_rol;
   FLUSH PRIVILEGES;

De donde hay dos variables que se reciben en el SP por parámetro
(_Email y _Clave)

El caso que me sucede es que si bien el SP se ejecuta sin problemas, y crea los usuarios mysql,
cuando intento loguearme en WorkBench con esos usuarios e intento ejecutar algún SP a los que
el rol tiene permisos de ejecución, sale el error (parafraseo) de que debo seleccionar una base de datos;
Si intento loguearme seleccionando la base de datos antes, me sale el error clásico de "acceso denegado"
Lo que entiendo es que de alguna manera no es lo mismo como se crea el usuario con el script desde el SP
que usando comandos directos en el WorkBench.

Si a alguien se le ocurre por donde puedo seguir viendo el caso, desde ya muy agradecido
Desde ya muchas gracias!!!




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)