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

¿Cómo crear un usuario y asignar privilegios a una base de datos MySQL?

Actualizado el 20 de febrero de 2026

¿Por qué es importante crear un usuario y asignar privilegios en MySQL?

Cuando trabajas con una base de datos MySQL, especialmente en un entorno de hosting, es fundamental no utilizar siempre el usuario root para todas las operaciones. El usuario root tiene acceso total a todo el servidor de bases de datos, lo que representa un riesgo de seguridad enorme si sus credenciales se ven comprometidas o si cometes un error accidentalmente.

Crear un usuario específico para cada aplicación o sitio web es una práctica de seguridad básica y profesional. Este usuario tendrá únicamente los permisos necesarios para trabajar con una base de datos concreta, limitando el daño potencial ante cualquier incidente. Además, facilita la gestión y el control de acceso, ya que puedes revocar permisos o eliminar usuarios sin afectar a otros proyectos.

En este artículo te explicaré paso a paso cómo crear un usuario y asignarle privilegios a una base de datos MySQL, tanto desde la línea de comandos como desde los paneles de control más comunes como cPanel o Plesk. No necesitas ser un experto, solo seguir las instrucciones con calma.

Requisitos previos antes de empezar

Antes de lanzarnos a crear usuarios, asegúrate de tener lo siguiente:

  • Acceso a la línea de comandos o a un panel de control de hosting (cPanel, Plesk, Syspanel, etc.).
  • Las credenciales del usuario root de MySQL o de un usuario con privilegios administrativos.
  • Tener clara la base de datos a la que quieres otorgar acceso.
  • Decidir el nombre del nuevo usuario y una contraseña segura (recomiendo al menos 12 caracteres combinando mayúsculas, minúsculas, números y símbolos).

[INFO] Si tu hosting utiliza Syspanel (antes conocido como HestiaCP), recuerda que el acceso a este panel se realiza a través del puerto 2106. Por ejemplo: https://tudominio.com:2106.

Método 1: Crear usuario y asignar privilegios desde la línea de comandos (SSH)

Este método es el más universal y te servirá en cualquier servidor donde tengas acceso SSH. Es ideal si te sientes cómodo con la terminal o si tu proveedor de hosting solo te ofrece este tipo de acceso.

Paso 1: Conectarte al servidor MySQL

Abre tu terminal y conéctate al servidor MySQL con el usuario root (o un usuario administrador):

mysql -u root -p

Te pedirá la contraseña del usuario root. Escríbela y presiona Enter. Verás el prompt de MySQL, que luce así: mysql>.

[WARNING] Nunca compartas la contraseña de root. Si estás en un entorno de producción, evita usar root para tus aplicaciones.

Paso 2: Crear el nuevo usuario

Para crear un usuario nuevo, usamos el comando CREATE USER. La sintaxis básica es la siguiente:

CREATE USER 'nombre_usuario'@'host' IDENTIFIED BY 'contraseña_segura';
  • nombre_usuario: El nombre que quieres darle al usuario.
  • host: Desde dónde se conectará este usuario. Usa 'localhost' si solo se conectará desde el mismo servidor (lo más común) o '%' si puede hacerlo desde cualquier dirección IP (menos seguro).
  • contraseña_segura: La contraseña que le asignarás.

Por ejemplo, para crear un usuario llamado usuario_blog que se conecte solo desde el servidor local:

CREATE USER 'usuario_blog'@'localhost' IDENTIFIED BY 'MiClaveSuperSegura2024!';

Paso 3: Asignar privilegios al usuario

Ahora que el usuario existe, debemos darle permisos sobre una base de datos concreta. El comando es GRANT. La estructura general es:

GRANT tipo_privilegio ON nombre_base_datos.* TO 'nombre_usuario'@'host';

Los privilegios más comunes son:

  • ALL PRIVILEGES: Otorga todos los permisos (SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, etc.) sobre la base de datos indicada.
  • SELECT: Solo lectura.
  • INSERT, UPDATE, DELETE: Permisos de escritura y modificación.
  • CREATE, ALTER, DROP: Permisos para crear y modificar tablas.

Por ejemplo, para darle todos los privilegios sobre la base de datos mi_blog al usuario usuario_blog:

GRANT ALL PRIVILEGES ON mi_blog.* TO 'usuario_blog'@'localhost';

Si solo quieres darle permisos de lectura y escritura básica (sin crear o eliminar tablas), podrías usar:

GRANT SELECT, INSERT, UPDATE, DELETE ON mi_blog.* TO 'usuario_blog'@'localhost';

Paso 4: Aplicar los cambios

Después de asignar los privilegios, es necesario actualizar los permisos del servidor para que los cambios surtan efecto. Ejecuta:

FLUSH PRIVILEGES;

Paso 5: Verificar la configuración

Para comprobar que todo está correcto, puedes ver los privilegios del usuario con:

SHOW GRANTS FOR 'usuario_blog'@'localhost';

Y para salir de MySQL, escribe EXIT;.

Método 2: Crear usuario y asignar privilegios desde cPanel

cPanel es uno de los paneles de control más utilizados en el hosting compartido. Su interfaz gráfica hace que el proceso sea muy intuitivo, incluso para principiantes.

Paso 1: Acceder a la sección de bases de datos MySQL

Inicia sesión en tu cPanel. Busca la sección Bases de Datos y haz clic en Bases de Datos MySQL (o MySQL Databases).

Paso 2: Crear la base de datos (si no existe)

Si aún no tienes la base de datos creada, en la parte superior verás un campo para crear una. Escribe el nombre y haz clic en Crear base de datos. Normalmente, cPanel añade un prefijo con tu nombre de usuario (ej. usuario_mi_blog).

[TIP] Anota el nombre completo de la base de datos, incluyendo el prefijo. Lo necesitarás más adelante.

Paso 3: Crear el nuevo usuario

Baja hasta la sección Usuarios MySQL. Verás campos para añadir un nombre de usuario y una contraseña. Completa ambos campos y haz clic en Crear usuario.

Paso 4: Asignar el usuario a la base de datos

Una vez creado el usuario, busca la sección Añadir usuario a la base de datos (o Add User to Database). Selecciona el usuario y la base de datos que acabas de crear en los menús desplegables y haz clic en Añadir.

Paso 5: Elegir los privilegios

Se abrirá una nueva pantalla con una lista de todos los privilegios disponibles. Puedes marcarlos todos (opción TODOS LOS PRIVILEGIOS) o seleccionar solo los que necesites. Marca las casillas correspondientes y haz clic en Hacer cambios.

[INFO] Para la mayoría de las aplicaciones (WordPress, Joomla, etc.), marcar TODOS LOS PRIVILEGIOS es suficiente y lo más recomendable.

¡Listo! Ya tienes tu usuario y base de datos configurados en cPanel.

Método 3: Crear usuario y asignar privilegios desde Plesk

Plesk es otro panel de control muy popular, especialmente en servidores dedicados y VPS. El proceso es ligeramente diferente pero igual de sencillo.

Paso 1: Acceder a las bases de datos

Inicia sesión en tu panel de Plesk. En el menú lateral izquierdo, busca y haz clic en Bases de datos.

Paso 2: Crear una nueva base de datos

Haz clic en el botón Agregar base de datos. Se abrirá un formulario donde debes indicar el nombre de la base de datos, el servidor de bases de datos (suele estar predefinido) y el tipo de base de datos (MySQL). Completa los campos y haz clic en Aceptar.

Paso 3: Crear un usuario para la base de datos

Dentro de la configuración de la base de datos recién creada, busca la pestaña o sección de Usuarios. Haz clic en Agregar usuario. Se te pedirá un nombre de usuario y una contraseña. Rellena los campos y pulsa Aceptar.

Paso 4: Asignar privilegios

Después de crear el usuario, deberías verlo en la lista de usuarios de esa base de datos. Haz clic en el icono de editar o en Privilegios. Se abrirá una ventana con una lista de permisos. Marca los que necesites o selecciona Todos los privilegios y guarda los cambios.

[TIP] Plesk te permite crear un usuario con privilegios de solo lectura, lo cual es útil para usuarios que solo necesitan consultar datos, como un analista o un reporteador.

Método 4: Usando Syspanel (anteriormente HestiaCP)

Si tu hosting utiliza Syspanel, el proceso es igual de sencillo. Recuerda que debes acceder al panel a través del puerto 2106 (ej. https://tudominio.com:2106).

Paso 1: Ir a la sección de bases de datos

Una vez dentro de Syspanel, busca la sección Bases de datos en el menú principal.

Paso 2: Crear la base de datos

Haz clic en Añadir base de datos. Te pedirá un nombre para la base de datos, un nombre de usuario y una contraseña. Completa los datos y haz clic en Guardar.

[INFO] En Syspanel, al crear la base de datos, puedes crear el usuario asociado en el mismo paso. Es una forma rápida y eficiente de hacerlo.

Paso 3: Asignar privilegios

El usuario creado en Syspanel recibe automáticamente todos los privilegios sobre la base de datos asociada. Si necesitas ajustar permisos más finos, tendrás que hacerlo desde la línea de comandos (como en el Método 1) usando el comando GRANT.

Errores comunes y soluciones

A veces las cosas no salen a la primera. Aquí tienes algunos errores típicos y cómo solucionarlos:

  • Error "Access denied for user": Esto significa que el usuario no tiene permisos para conectarse o que la contraseña es incorrecta. Revisa que el host coincida (localhost vs %) y que los privilegios se hayan aplicado con FLUSH PRIVILEGES;.
  • Error "Can't create database": Si estás intentando crear una base de datos y no tienes permisos, es probable que tu usuario no tenga el privilegio CREATE. Pide a tu proveedor de hosting que te lo otorgue o usa el panel de control.
  • Olvidé la contraseña del usuario: Puedes cambiarla desde la línea de comandos con ALTER USER 'usuario'@'localhost' IDENTIFIED BY 'nueva_contraseña'; o desde el panel de control en la sección de usuarios.

Preguntas frecuentes (FAQ)

¿Qué es un privilegio en MySQL?

Un privilegio es un permiso específico que se le otorga a un usuario para realizar una acción concreta sobre una base de datos, tabla o columna. Ejemplos: SELECT (leer), INSERT (insertar), UPDATE (actualizar), DELETE (borrar), CREATE (crear tablas), DROP (eliminar tablas).

¿Puedo asignar los mismos privilegios a varias bases de datos a la vez?

Sí, puedes ejecutar el comando GRANT varias veces o usar comodines. Por ejemplo, para dar todos los privilegios a todas las bases de datos que empiecen por mi_, usarías: GRANT ALL PRIVILEGES ON mi_.* TO 'usuario'@'localhost';. Úsalo con precaución.

¿Cómo puedo revocar privilegios a un usuario?

Para quitar permisos, se usa el comando REVOKE. Por ejemplo: REVOKE DELETE ON mi_blog.* FROM 'usuario_blog'@'localhost';. Después, ejecuta FLUSH PRIVILEGES;.

¿Es seguro usar el usuario root para mi aplicación web?

No, nunca es recomendable. Si tu aplicación es comprometida, el atacante tendría acceso total a todas las bases de datos del servidor. Usa siempre un usuario con privilegios limitados a la base de datos que necesita.

¿Qué significa el host 'localhost' y '%'?

  • 'localhost': El usuario solo podrá conectarse desde el mismo servidor donde está MySQL. Es la opción más segura.
  • '%': El usuario puede conectarse desde cualquier dirección IP. Úsalo solo si sabes lo que haces, ya que aumenta la superficie de ataque.

Consejos finales para una buena gestión de usuarios

  • Usa contraseñas fuertes y cámbialas periódicamente.
  • Principio del mínimo privilegio: Otorga solo los permisos necesarios para que la aplicación funcione. Si solo necesita leer, no le des permisos de escritura.
  • Documenta tus usuarios: Lleva un registro de qué usuario pertenece a qué base de datos y para qué aplicación se usa. Esto te ahorrará dolores de cabeza en el futuro.
  • Elimina usuarios que ya no uses para mantener tu servidor limpio y seguro.
  • Haz copias de seguridad de tus bases de datos con regularidad.

[WARNING] Nunca otorgues privilegios GRANT OPTION a usuarios que no sean administradores. Este privilegio permite al usuario otorgar permisos a otros, lo cual puede ser peligroso.

Con estos métodos, tanto desde la consola como desde los paneles más comunes, tendrás el control total sobre quién accede a tus bases de datos y qué puede hacer con ellas. La seguridad empieza por una buena gestión de usuarios y privilegios. ¡Ahora ya sabes cómo hacerlo!

¿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