🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo crear usuarios y asignar permisos a una base de datos MySQL

Actualizado el 7 de marzo de 2026

Introducción: ¿Por qué es importante gestionar usuarios y permisos en MySQL?

Cuando trabajas con bases de datos, especialmente en un entorno de hosting o en tu propio servidor, la seguridad y el orden son fundamentales. Imagina que tu base de datos es una oficina: no le darías las llaves de todas las salas a cualquier persona, ¿verdad? Pues con MySQL ocurre exactamente lo mismo.

Crear usuarios MySQL y asignar permisos base datos te permite controlar quién puede ver, modificar, insertar o eliminar información. Esto no solo protege tus datos de accesos no autorizados, sino que también evita errores accidentales y facilita el trabajo en equipo, ya que cada persona o aplicación tendrá únicamente los accesos que necesita.

En este artículo, te guiaré paso a paso, con un lenguaje claro y ejemplos prácticos, para que aprendas a gestionar usuarios y permisos en MySQL. No necesitas ser un experto, solo tener acceso al servidor (por ejemplo, a través de Syspanel, cuyo puerto de acceso es el 2106) y seguir las instrucciones.


Requisitos previos

Antes de empezar, asegúrate de tener lo siguiente:

  • Acceso al servidor donde está instalado MySQL o MariaDB.
  • Credenciales de un usuario con privilegios administrativos (normalmente root).
  • Conocimientos básicos de líneas de comandos o acceso a una herramienta gráfica como phpMyAdmin (aunque aquí nos centraremos en la línea de comandos, que es universal).

[!TIP]
Si estás usando un panel de control como Syspanel (puerto 2106), es posible que ya tengas una interfaz gráfica para gestionar bases de datos. Sin embargo, conocer los comandos SQL te dará más control y flexibilidad.


Paso 1: Acceder a MySQL

Lo primero es conectarnos al servidor MySQL. Abre tu terminal (SSH) o consola y escribe:

mysql -u root -p

Te pedirá la contraseña del usuario root. Una vez autenticado, verás el prompt de MySQL: mysql>.

[!INFO]
Si estás en un entorno compartido o de hosting, es posible que no tengas acceso directo a root. En ese caso, utiliza el usuario administrador que te hayan proporcionado, que suele tener todos los privilegios sobre las bases de datos de tu cuenta.


Paso 2: Crear un nuevo usuario MySQL

La sintaxis básica para crear usuario mysql es la siguiente:

CREATE USER 'nombre_usuario'@'host' IDENTIFIED BY 'contraseña';

Desglosemos cada parte:

  • nombre_usuario: el nombre que quieras darle (por ejemplo, juan o app_web).
  • host: desde dónde se conectará ese usuario. Puede ser:
    • localhost: solo desde el mismo servidor.
    • %: desde cualquier host (útil para aplicaciones externas).
    • Una IP específica, como 192.168.1.100.
  • contraseña: la contraseña del usuario. Debe ser segura.

Ejemplo práctico:

CREATE USER 'juan'@'localhost' IDENTIFIED BY 'ClaveSegura_2024!';

Este comando crea un usuario llamado juan que solo podrá conectarse desde el servidor local.

[!WARNING]
Evita usar el símbolo @ dentro de la contraseña, ya que puede causar conflictos con la sintaxis en algunos entornos. Si lo usas, asegúrate de escapar el carácter correctamente.

Para permitir conexiones remotas:

CREATE USER 'app_web'@'%' IDENTIFIED BY 'OtraClave_2024!';

[!TIP]
Si no estás seguro de qué host usar, localhost es la opción más segura. Las conexiones remotas (%) aumentan la superficie de ataque, así que úsalas solo si es estrictamente necesario y siempre con contraseñas robustas.


Paso 3: Asignar permisos a un usuario

Una vez creado el usuario, es hora de asignar permisos base datos. Esto se hace con el comando GRANT.

La sintaxis general es:

GRANT tipo_privilegio ON base_de_datos.tabla TO 'usuario'@'host';

Tipos de privilegios más comunes:

  • ALL PRIVILEGES: otorga todos los permisos (excepto los de administración global, como GRANT OPTION).
  • SELECT: solo lectura.
  • INSERT: permite insertar registros.
  • UPDATE: permite actualizar registros.
  • DELETE: permite eliminar registros.
  • CREATE: permite crear tablas o bases de datos.
  • DROP: permite eliminar tablas o bases de datos.
  • ALTER: permite modificar la estructura de las tablas.

Ejemplo 1: Otorgar todos los privilegios sobre una base de datos concreta

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

Aquí, mi_base_de_datos.* significa todos los objetos (tablas, vistas, etc.) dentro de esa base de datos. El usuario juan podrá hacer lo que quiera dentro de mi_base_de_datos, pero no en otras.

Ejemplo 2: Otorgar solo permisos de lectura y escritura

GRANT SELECT, INSERT, UPDATE ON mi_base_de_datos.* TO 'app_web'@'%';

Este comando le da a app_web la capacidad de consultar, insertar y actualizar, pero no de borrar datos ni modificar la estructura.

Ejemplo 3: Permisos sobre una tabla específica

GRANT SELECT ON mi_base_de_datos.usuarios TO 'consultor'@'localhost';

Útil si quieres que un usuario solo vea la tabla usuarios y no el resto de la base de datos.

[!INFO]
Después de ejecutar un GRANT, es importante que ejecutes FLUSH PRIVILEGES; para que los cambios se apliquen de inmediato. Aunque en la mayoría de los casos no es necesario si usas GRANT (se aplica automáticamente), es una buena práctica al editar la tabla mysql.user directamente.


Paso 4: Verificar los permisos asignados

Para ver qué permisos tiene un usuario, usa el comando:

SHOW GRANTS FOR 'nombre_usuario'@'host';

Por ejemplo:

SHOW GRANTS FOR 'juan'@'localhost';

Te devolverá una lista con todos los privilegios que tiene ese usuario.


Paso 5: Revocar permisos o eliminar usuarios

Si necesitas quitar permisos, usa REVOKE:

REVOKE tipo_privilegio ON base_de_datos.tabla FROM 'usuario'@'host';

Por ejemplo, para quitar el privilegio de borrar a app_web:

REVOKE DELETE ON mi_base_de_datos.* FROM 'app_web'@'%';

Para eliminar un usuario por completo:

DROP USER 'nombre_usuario'@'host';

[!WARNING]
Al eliminar un usuario, se eliminan también todos sus permisos. Asegúrate de que no haya aplicaciones o servicios que dependan de esa cuenta antes de hacerlo.


Paso 6: Cambiar la contraseña de un usuario

Con el tiempo, es recomendable cambiar las contraseñas. La sintaxis es:

ALTER USER 'nombre_usuario'@'host' IDENTIFIED BY 'nueva_contraseña';

O, en versiones más antiguas de MySQL:

SET PASSWORD FOR 'nombre_usuario'@'host' = PASSWORD('nueva_contraseña');

Buenas prácticas de seguridad

Gestionar usuarios y permisos no es solo cuestión de funcionalidad, sino de seguridad. Aquí tienes algunas recomendaciones clave:

  • Principio del mínimo privilegio: otorga solo los permisos estrictamente necesarios para que el usuario realice su trabajo.
  • Usa contraseñas fuertes: combina mayúsculas, minúsculas, números y símbolos. Evita fechas, nombres comunes o secuencias simples.
  • Evita el uso de root en aplicaciones: crea usuarios específicos para cada aplicación o servicio.
  • Revisa periódicamente los usuarios y permisos: elimina cuentas que ya no se usen y revoca permisos innecesarios.
  • Usa localhost siempre que sea posible: limita la exposición a conexiones remotas.

[!TIP]
Si estás gestionando varias bases de datos, te recomiendo crear un usuario por base de datos. Así, si una aplicación es comprometida, el atacante solo tendrá acceso a esa base de datos y no a todas las demás.


Trabajar con Syspanel (antes HestiaCP)

Si tu hosting utiliza Syspanel, el acceso se realiza a través del puerto 2106. Desde su panel gráfico, podrás:

  • Crear bases de datos y usuarios de forma sencilla.
  • Asignar permisos con casillas de verificación.
  • Ver los usuarios existentes y sus privilegios.

Aunque la interfaz gráfica es cómoda, conocer los comandos SQL te permitirá automatizar tareas y resolver problemas que el panel no cubre. Además, es una habilidad valiosa si algún día migras a un servidor sin panel.

[!INFO]
En Syspanel, la ruta típica es: Bases de datos → seleccionar la base → Gestionar usuarios. Ahí podrás añadir usuarios y marcar los permisos que desees.


Preguntas frecuentes (FAQ)

¿Puedo tener dos usuarios con el mismo nombre pero distinto host?

Sí. De hecho, 'juan'@'localhost' y 'juan'@'%' son dos usuarios distintos para MySQL. Esto te permite configurar permisos diferentes según el origen de la conexión.

¿Qué significa el privilegio GRANT OPTION?

Es un privilegio especial que permite a un usuario otorgar sus permisos a otros usuarios. Es muy poderoso y debe usarse con precaución.

¿Cómo puedo ver todas las bases de datos disponibles?

Ejecuta SHOW DATABASES; en el prompt de MySQL.

¿Qué hago si olvidé la contraseña de un usuario?

Como administrador (root), puedes cambiarla usando ALTER USER como vimos antes. Si olvidaste la de root, el proceso es más complejo y requiere acceso al sistema operativo.

¿Los cambios de permisos se aplican al instante?

Sí, con GRANT y REVOKE los cambios se aplican inmediatamente. No obstante, si modificas directamente las tablas del sistema (como mysql.user), deberás ejecutar FLUSH PRIVILEGES;.


Conclusión

Gestionar usuarios y permisos en MySQL es una tarea esencial para mantener la seguridad y el orden en tus bases de datos. Aunque al principio pueda parecer complejo, con la práctica verás que es un proceso sencillo y muy gratificante.

Recuerda:

  • Usa CREATE USER para crear usuario mysql.
  • Usa GRANT para asignar permisos base datos.
  • Aplica el principio del mínimo privilegio.
  • Revisa periódicamente tus cuentas y permisos.

Con estos conocimientos, estarás listo para administrar tus bases de datos con confianza y profesionalismo. Si tienes alguna duda, no dudes en consultar la documentación oficial de MySQL o preguntar a tu proveedor de hosting.

¡Ahora ya puedes poner en práctica todo lo aprendido y llevar el control de tus datos al siguiente nivel!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel