Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Question Solo Ver una BD

Hola amigos:
Tengo el siguiente problema:
Tengo un motor de datos Mysql, con 5 Base datos y 3 usuarios

ejemplo:
Base Datos, ventas, contabilidad, inventario, personal y automoviles
Usuario; usuario1, usuario2 y usuario3.

Quiero que el "usuario1" solo pueda ver la Base Datos "Ventas", que las otra ni siquiera se entere que existen, cualquier herramienta que use solo pueda ver y manipular esa Base Dato.

O que el "usuario2" solo puede ver y manipular la Base Datos "Personal y Ventas", por ejemplo


Existe alguna forma de hacerlo a nivel de usuario o BD, sin importar la herramienta que use para accesar a ella, ya sea Delphi, PHP, MysqlFront, MysqlManager, etc..


Gracias
Responder Con Cita
  #2  
Antiguo 30-09-2024
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.955
Poder: 28
delphi.com.ar Va camino a la fama
Simplemente debes usar el sistema de permisos de MySql y crear usuarios nominales en la base de datos, solo permitiendo el acceso a las bases esperadas.

Código SQL [-]
CREATE USER 'usuario1'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT ON usuario1.* TO 'usuario1'@'%';

https://dev.mysql.com/doc/refman/8.4...eate-user.html
https://dev.mysql.com/doc/refman/8.4/en/grant.html

Saludos.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 01-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Pero esto:

Código Delphi [-]
CREATE USER 'usuario1'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT ON usuario1.* TO 'usuario1'@'%';

solo me permite administrar la BD, en cuestion.
Pero me deja ver las demas igual? me refiero que ni siquiera saber que existe otra?

Gracias,
Responder Con Cita
  #4  
Antiguo 01-10-2024
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 149
Poder: 19
aposi Va por buen camino
Hoy es el dia de chatgpt


he puesto tu pregunta al chatgpt y su respuesta es:


Para lograr lo que necesitas en MySQL, debes gestionar cuidadosamente los privilegios de los usuarios sobre las bases de datos. Puedes restringir el acceso de cada usuario a las bases de datos específicas que les corresponden y evitar que puedan ver o manipular otras bases de datos en el sistema.
Los pasos generales son los siguientes:

1. Crear usuarios (si no existen)

Si aún no has creado los usuarios, puedes hacerlo con el siguiente comando SQL:
CREATE USER 'usuario1'@'%' IDENTIFIED BY 'password1';
CREATE USER 'usuario2'@'%' IDENTIFIED BY 'password2';
CREATE USER 'usuario3'@'%' IDENTIFIED BY 'password3';

Reemplaza % si solo deseas permitir el acceso desde un host específico, y ajusta las contraseñas según sea necesario.

2. Otorgar privilegios específicos a cada usuario

Debes otorgar privilegios únicamente sobre las bases de datos que deseas que cada usuario pueda ver y manipular.

Usuario1: Solo acceso a la base de datos ventas.
GRANT ALL PRIVILEGES ON ventas.* TO 'usuario1'@'%';

Usuario2: Acceso a las bases de datos personal y ventas.
GRANT ALL PRIVILEGES ON personal.* TO 'usuario2'@'%';
GRANT ALL PRIVILEGES ON ventas.* TO 'usuario2'@'%';

Usuario3: Si tiene acceso a otras bases de datos o si no tiene acceso a ninguna base de datos en particular, puedes configurar los privilegios según sea necesario. Ejemplo de acceso a la base de datos inventario:

GRANT ALL PRIVILEGES ON inventario.* TO 'usuario3'@'%';

3. Revocar acceso a otras bases de datos

Asegúrate de que ningún usuario tenga privilegios en otras bases de datos. Esto es importante porque si un usuario tiene algún tipo de privilegio sobre una base de datos, podrá verla.

Por ejemplo, para asegurarte de que usuario1 no pueda acceder a otras bases de datos como contabilidad o inventario, puedes ejecutar lo siguiente:

REVOKE ALL PRIVILEGES ON contabilidad.* FROM 'usuario1'@'%';
REVOKE ALL PRIVILEGES ON inventario.* FROM 'usuario1'@'%';
REVOKE ALL PRIVILEGES ON personal.* FROM 'usuario1'@'%';
REVOKE ALL PRIVILEGES ON automoviles.* FROM 'usuario1'@'%';

Haz lo mismo para cada usuario según las bases de datos que no deben ver.




4. Evitar que los usuarios puedan listar todas las bases de datos

Aunque hayas revocado los privilegios, los usuarios podrían aún ser capaces de listar todas las bases de datos usando herramientas como SHOW DATABASES. Para evitar esto, debes modificar el archivo de configuración de MySQL para que los usuarios solo puedan ver las bases de datos a las que tienen acceso.
  1. Edita el archivo de configuración de MySQL (usualmente my.cnf o my.ini dependiendo del sistema operativo).
  2. Busca la sección [mysqld] y agrega la siguiente línea:
skip-show-database



Reinicia el servidor MySQL para que los cambios surtan efecto:
  • En Linux:
sudo systemctl restart mysql


En Windows, usa el Administrador de Servicios para reiniciar MySQL.


5. Aplicar los cambios

Finalmente, después de realizar todos estos pasos, aplica los cambios ejecutando:


FLUSH PRIVILEGES;

Última edición por aposi fecha: 01-10-2024 a las 22:06:23.
Responder Con Cita
  #5  
Antiguo 12-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 2
navbuoy Va por buen camino
recuerda tambien que el simbolo "%" equivale a "desde cualquier host o localizacion" por si tienes que operar desde el propio servidor (entonces en vez de % seria localhost o la propia IP del servidor MySQL)
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
Descargar solo txt FTP ronald_tro Varios 18 01-05-2014 18:25:38
Solo ejecutar un procedimiento cuando solo la ventana esta activa feliz-58 Varios 4 10-08-2013 19:39:04
Solo se vive una vez... movorack La Taberna 1 04-05-2010 06:01:19
.Net solo C# jevo19100 .NET 5 24-01-2006 02:44:28
mostrar SOLO cliente de los que tengo un sólo registro Giniromero SQL 15 11-06-2004 12:33:19


La franja horaria es GMT +2. Ahora son las 23:22:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi