Ver Mensaje Individual
  #4  
Antiguo 01-10-2024
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 159
Reputación: 20
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