Cómo crear un usuario y otorgar permisos en MySQL
En MySQL 8.0 un usuario se identifica por el par usuario@host. Primero se crea el usuario con CREATE USER y luego se le otorgan permisos con GRANT. El principio rector es dar solo los permisos necesarios, ni uno más.
- 1
Crea el usuario
Define el host desde el que se conecta. Usa localhost para conexiones locales o un rango como 10.0.%.% para una red interna. Evita el comodín global % salvo que sea estrictamente necesario.
CREATE USER 'app_lectura'@'10.0.%.%' IDENTIFIED BY 'una_clave_fuerte'; - 2
Otorga permisos mínimos sobre una base
Da solo lo que la aplicación necesita. Un usuario de solo lectura no requiere INSERT ni DELETE.
GRANT SELECT ON mi_base.* TO 'app_lectura'@'10.0.%.%'; - 3
Para un usuario de aplicación con escritura
Otorga las operaciones de datos habituales, pero evita permisos administrativos como GRANT OPTION o SUPER.
GRANT SELECT, INSERT, UPDATE, DELETE ON mi_base.* TO 'app_web'@'10.0.%.%'; - 4
Aplica y verifica los permisos
En MySQL 8.0 GRANT aplica de inmediato, pero FLUSH PRIVILEGES es útil tras cambios manuales en tablas de sistema. Revisa siempre lo otorgado.
SHOW GRANTS FOR 'app_lectura'@'10.0.%.%';
// el error común
Otorgar ALL PRIVILEGES ON *.* convierte al usuario en casi-root y es un riesgo de seguridad enorme. Además, si el host del GRANT no coincide con el del CREATE USER, MySQL crea otro usuario distinto y te preguntarás por qué no funciona el login.
// cuándo conviene un experto
Cuando el esquema de permisos creció sin control y ya nadie sabe quién puede hacer qué, conviene auditarlo. En dba.mx revisamos y reordenamos accesos con mínimo privilegio y roles, con techo cerrado.
Agenda un Escaneo — desde USD $550Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.