Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2023
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 170
Poder: 21
pruz Va por buen camino
Angry 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
Responder Con Cita
  #2  
Antiguo 14-11-2023
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por pruz Ver Mensaje
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
Hola Patricio.

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
pk-usuario_id
fk-base_id
   usuario_contraseña
Y en BASE los siguientes campos:

Código:
TBL_BASE
pk-base_id 
    base_ruta_conexion
Donde TBL_USUARIO, estará relacionado con la tabla TBL_BASE por el campo "base_id", como te darás cuenta, con este sencillo modelo, también podrás definir si USUARIO1 se puede conectar a otra base de datos....si es el caso, BASE2 x ej.

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.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 14-11-2023 a las 17:43:00.
Responder Con Cita
  #3  
Antiguo 14-11-2023
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 170
Poder: 21
pruz Va por buen camino
Talking

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
Responder Con Cita
  #4  
Antiguo 14-11-2023
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
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:


Código SQL [-]
GRANT PRIVILEGE? ON database.table TO 'username'@'host';
FLUSH PRIVILEGES;

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:

Código SQL [-]
GRANT INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'username'@'host' WITH GRANT OPTION;
__________________
El malabarista.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conectar base de datos Firebird con base de datos Oscommerce 2.3.3 Adriadob Firebird e Interbase 11 31-10-2012 11:28:46
Error en alta masiva de datos en una sóla transacción afxe Firebird e Interbase 3 07-05-2007 10:27:38
Dos aplicaciones y sola base de datos..? kia Conexión con bases de datos 19 01-05-2006 18:08:20
DbExpres: Dod Bases de Datos, una sola Transacción. josemmerida Conexión con bases de datos 1 09-02-2005 19:43:58
¿15 MB para una sola base de datos? M@rcos Conexión con bases de datos 2 20-06-2003 15:49:26


La franja horaria es GMT +2. Ahora son las 13:41:10.


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
Copyright 1996-2007 Club Delphi