Saltar al contenido
DBAExperts
MySQL Usuarios y permisos

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. 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. 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. 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. 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 $550

Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.