Ver Base Datos una sola
Hola Amigos:
Tengo la siguiente problema, aqui va el contexto. 1.- Tengo un motor de datos Mysql, con varias Base de Datos (Base1, Base2, Base3, Base4, etc) 2.- Tengo varios usuarios con sus privilegios respectivos (Usuario1, Usuario2, Usuario3, etc). Pero solo quiero que cada usuario vea su base de datos y no otras, es decir, Usuario1 con Base1, Usuario2 con Base2 y asi sucesivamente. Cualquier select o consulta, no pueda ver otra base de datos que no se la suya. Si alguien sabe como asignar esos niveles de seguridad o privilegios de usuario...Por favor. Gracias. Patricio |
Cita:
Cual sería "la naturaleza" de tu aplicación, que existe "la necesidad" de que nUsuarios se conecten a nBasesDeDatos??...me resulta interesante saber que tipo de sistema sería. Ahora, considero, que se pudiera resolver desde que el usuario se "logea" al SISTEMA, se me ocurre, tener una base de datos general, donde tengas registrado ahi a los nUsuarios y tener definido ahí a que bases de datos se pueden conectar, así de esta manera cuando se logee el Usuario1, en la bd general, estará definido que se deberá conectar a la Base1.... Es decir tendrías una BD General con las siguientes tablas: USUARIO BASE En USUARIO tendrías -talvez- los siguientes campos: Código:
TBL_USUARIO Código:
TBL_BASE Y a partir de aqui, generas código para realizar las conexiones a las base de datos de cada usuario. Espero te sirve esta idea. Saludos. |
Hola Roman:
Gracias por responder. el sistema es uno de Clientes Relacionados, es decir, por cada cliente creo una base de datos, ya que con ello puedo miminizar los tiempo de respuesta, sobre todo con los inventarios. Eso , es algo simple. Pero creo que la solucion que me das no es toda completa o no logre entenderla bien Por que, si un usuario hace un show databases; el podra ver todas las bases de datos, y solo quiero que vea la suya al hacer Show database. Patricio |
Lo que haces se llama una arquitectura "multi-tenant"
Con respecto a la solución, tienes que aplicar los privilegios: https://dev.mysql.com/doc/refman/8.0...-provided.html Es algo como:
Donde `PRIVILEGE?` es algo que debes elegir con intencion. La documentacion lo explica. P.D: probablemente es mejor si haces un "split" donde tienes el usuario "admin" con todo y uno que solo tiene permisos "crud" como:
|
La franja horaria es GMT +2. Ahora son las 05:31:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi