Cómo usar MySQL para auditoría y control de accesos

Cuando se habla de bases de datos, mucha gente piensa únicamente en almacenar información.

Pero en entornos reales, MySQL también puede utilizarse para:

  • auditoría
  • trazabilidad
  • control de accesos
  • monitorización
  • detección de comportamientos sospechosos

Y lo interesante es que se puede enseñar todo esto con ejemplos muy sencillos.


1️⃣ Levantar MySQL con Docker

docker run --name mysql-demo \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
-d mysql:8

2️⃣ Crear una base de datos de ejemplo

Vamos a simular una empresa con empleados y salarios.

DROP DATABASE IF EXISTS demo_seguridad;
CREATE DATABASE demo_seguridad;
USE demo_seguridad;

3️⃣ Crear tabla de empleados

CREATE TABLE empleados (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50),
puesto VARCHAR(50),
salario INT
);

Insertamos algunos datos:

INSERT INTO empleados(nombre,puesto,salario) VALUES
('Ana','Analista',32000),
('Carlos','Administrador Sistemas',38000),
('Marta','Marketing',42000),
('Luis','Director General',150000);

4️⃣ Registrar accesos sensibles

Ahora creamos una tabla de auditoría.

CREATE TABLE log_accesos_salarios (
id INT AUTO_INCREMENT PRIMARY KEY,
usuario_mysql VARCHAR(100),
fecha DATETIME,
evento VARCHAR(200)
);

Aquí se almacenarán intentos de acceso sensibles.


5️⃣ Crear un procedimiento con control de acceso

Este es el punto interesante.

DELIMITER $$

CREATE PROCEDURE ver_salario(IN nombre_empleado VARCHAR(50))
BEGIN

IF nombre_empleado = 'Luis' THEN

INSERT INTO log_accesos_salarios(usuario_mysql,fecha,evento)
VALUES(
CURRENT_USER(),
NOW(),
'Intento de consulta del salario del Director General'
);

SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT='ACCESO DENEGADO: salario protegido';

ELSE

SELECT nombre,puesto,salario
FROM empleados
WHERE nombre = nombre_empleado;

END IF;

END$$

DELIMITER ;

6️⃣ Probar el sistema

Consulta permitida:

CALL ver_salario('Ana');

Consulta bloqueada:

CALL ver_salario('Luis');

Ver eventos registrados:

SELECT * FROM log_accesos_salarios;

🔐 ¿Qué se aprende realmente con esto?

Aunque el ejemplo es pequeño, aquí aparecen conceptos reales de seguridad:

✅ control de acceso
✅ auditoría
✅ trazabilidad
✅ protección de información sensible
✅ registros de eventos
✅ alertas ante accesos indebidos

Y además el alumnado entiende algo importante:

La seguridad no solo está en el firewall o el antivirus. También debe existir dentro de la propia base de datos.

Ese es precisamente el tipo de cosas que en muchos cursos técnicos casi nunca se enseñan.