🔐 Cómo crear usuarios y gestionar permisos en MySQL (sin comprometer tu seguridad)


Trabajar con usuarios en MySQL no es solo cuestión de crear accesos: es una parte crítica de la seguridad de cualquier aplicación.

Si alguna vez has usado el usuario root para todo… este post te va a ahorrar más de un problema.

Aquí aprenderás a crear usuarios, asignar permisos correctamente y aplicar buenas prácticas reales.



📌 ¿Por qué es importante gestionar usuarios correctamente?


En proyectos reales:

  • No todos los usuarios deben tener acceso total
  • Cada aplicación debería tener su propio usuario
  • Un mal permiso puede exponer toda tu base de datos

👉 Esto no es teoría: es seguridad básica.



👤 Crear un usuario en MySQL


🔹 Sintaxis básica

CREATE USER 'usuario_app'@'localhost' IDENTIFIED BY 'password_seguro';


📍 Explicación

  • 'usuario_app' → nombre del usuario
  • 'localhost' → desde dónde puede conectarse
  • 'password_seguro' → contraseña

⚙️ Asignar permisos (GRANT)


Aquí es donde realmente defines qué puede hacer el usuario.



🔹 Permisos básicos

GRANT SELECT, INSERT, UPDATE ON mi_base_de_datos.* TO 'usuario_app'@'localhost';


👉 Este usuario:

✔ puede leer

✔ puede insertar

✔ puede actualizar

❌ no puede borrar

❌ no puede modificar estructura


🔐 Dar permisos completos (usar con cuidado)


GRANT ALL PRIVILEGES ON mi_base_de_datos.* TO 'usuario_app'@'localhost';

⚠️ Esto da acceso total a la base de datos



🔄 Aplicar cambios


FLUSH PRIVILEGES;

👉 asegura que los cambios se apliquen inmediatamente



🧪 Ejemplo real (muy importante)


Supongamos una aplicación web en PHP:

CREATE USER 'app_web'@'localhost' IDENTIFIED BY '123456';
GRANT SELECT, INSERT, UPDATE ON tienda.* TO 'app_web'@'localhost';
FLUSH PRIVILEGES;

👉 Esto es lo correcto para producción



🚨 Errores comunes (muy peligrosos)



❌ 1. Usar root en producción


👉 nunca hagas esto:

$user = "root";

👉 si hackean tu app → acceden a TODO



❌ 2. Dar más permisos de los necesarios


GRANT ALL PRIVILEGES

👉 si no lo necesitas → no lo des



❌ 3. Permitir conexiones desde cualquier IP


'usuario'@'%'

👉 esto abre tu base de datos al mundo



❌ 4. Contraseñas débiles


123456
password
admin

👉 esto es un fallo crítico



🔒 Buenas prácticas (nivel profesional)


✔ Crear un usuario por aplicación

✔ Limitar permisos al mínimo necesario

✔ Usar localhost siempre que sea posible

✔ No usar root

✔ Cambiar contraseñas regularmente


🧩 Caso práctico real


Sistema de tickets (como tu Ravvi):

CREATE USER 'ravvi_app'@'localhost' IDENTIFIED BY 'clave_segura';
GRANT SELECT, INSERT, UPDATE ON ravvi.* TO 'ravvi_app'@'localhost';


👉 Esto protege tu sistema incluso si hay fallos en el código



🔗 Siguiente lectura recomendada:


👉 Cómo conectar MySQL con PHP usando PDO

👉 Claves primarias y foráneas en MySQL

👉 Cómo diseñar una base de datos real


🎯 Conclusión:


Gestionar usuarios en MySQL no es solo administración…

👉 es seguridad.

Si aplicas estos principios:

  • reduces riesgos
  • mejoras tu arquitectura
  • haces tu sistema más profesional