15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
01.11.2024
1 +1

Cómo Crear un Nuevo Usuario y Establecer Permisos en MySQL

MySQL sigue siendo uno de los sistemas de gestión de bases de datos relacionales más ampliamente implementados en el mundo, potenciando todo, desde pequeños proyectos personales hasta aplicaciones a escala empresarial. Ya sea que seas un desarrollador, un administrador de sistemas o un propietario de negocio que gestiona tu propia infraestructura, comprender cómo crear usuarios de MySQL y configurar sus permisos es una habilidad innegociable para mantener un entorno de base de datos seguro y bien organizado.

La mala gestión de usuarios es una de las principales causas de brechas de bases de datos. Otorgar privilegios excesivos, reutilizar credenciales o dejar activas cuentas predeterminadas puede exponer toda tu capa de datos a riesgos innecesarios. Esta guía te lleva a través del proceso completo — desde iniciar sesión en MySQL hasta verificar permisos — con comandos claros, ejemplos prácticos y mejores prácticas de seguridad en cada paso.

Por qué la gestión de usuarios de MySQL es importante

Antes de profundizar en los comandos, vale la pena entender *por qué* esto importa. MySQL opera en un principio de menor privilegio: cada usuario debe tener acceso solo a las bases de datos, tablas y operaciones específicas que realmente necesita. Esto minimiza el radio de impacto de una cuenta comprometida y facilita mucho la auditoría.

Si estás ejecutando MySQL en un plan de VPS Hosting gestionado o un Servidor Dedicado, tienes acceso de nivel raíz completo a tu instancia de MySQL, lo que te da control total sobre la creación de usuarios y la gestión de permisos. Muchos entornos de panel de control — como los disponibles con VPS con cPanel — también proporcionan una interfaz gráfica para la gestión de MySQL, que puede complementar el enfoque de línea de comandos descrito aquí.

Requisitos previos

Antes de comenzar, asegúrate de tener:

  • MySQL 5.7+ o MySQL 8.0+ instalado y ejecutándose en tu servidor
  • Acceso raíz o acceso a una cuenta de superusuario de MySQL con privilegios GRANT OPTION
  • Acceso a terminal (Linux/macOS) o Símbolo del sistema / PowerShell (Windows)

Paso 1: Inicia sesión en MySQL

Para gestionar usuarios y permisos, debes autenticarte como un usuario con privilegios administrativos suficientes. En la mayoría de los casos, esta es la cuenta root.

Abre tu terminal o símbolo del sistema

  • Linux / macOS: Abre tu aplicación de terminal
  • Windows: Abre Símbolo del sistema o PowerShell

Conéctate al servidor MySQL

Ejecuta el siguiente comando:

mysql -u root -p

Se te pedirá que ingreses la contraseña raíz. Tras la autenticación exitosa, verás el símbolo del sistema de MySQL:

mysql>

> Consejo de seguridad: Si te conectas a un servidor MySQL remoto, especifica el host con la bandera -h:

> “`bash

> mysql -u root -p -h your_server_ip

> “`

Paso 2: Crea un nuevo usuario de MySQL

Una vez que estés dentro del shell de MySQL, puedes crear un nuevo usuario con la declaración CREATE USER.

Sintaxis

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

Desglose de parámetros:

ParámetroDescripción
usernameEl nombre que deseas asignar al nuevo usuario
hostEl host desde el cual se permite que el usuario se conecte. Usa localhost para acceso solo local o % como comodín para cualquier host
passwordUna contraseña fuerte y única para este usuario

Ejemplo: Crea un usuario accesible desde cualquier host

CREATE USER 'newuser'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';

Ejemplo: Crea un usuario restringido a localhost

CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'AnotherStr0ng#Pass';

> Mejor práctica: Siempre que sea posible, restringe los usuarios a localhost o a una dirección IP específica en lugar de usar %. El acceso de host comodín aumenta tu superficie de ataque innecesariamente.

Nota de MySQL 8.0 sobre complementos de autenticación

MySQL 8.0 introdujo caching_sha2_password como el complemento de autenticación predeterminado, lo que puede causar problemas de compatibilidad con clientes o aplicaciones más antiguas. Si es necesario, puedes establecer explícitamente el método de autenticación:

CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongP@ssw0rd!';

Paso 3: Otorga permisos al usuario

Crear un usuario no otorga automáticamente acceso a ninguna base de datos. Debes asignar explícitamente privilegios usando la declaración GRANT.

Sintaxis

GRANT privileges ON database.table TO 'username'@'host';

Desglose de parámetros:

ParámetroDescripción
privilegesUna lista separada por comas de permisos (p. ej., SELECT, INSERT, UPDATE, DELETE) o ALL PRIVILEGES
database.tableEl alcance de la concesión. Usa *.* para todas las bases de datos y tablas, dbname.* para todas las tablas en una base de datos específica, o dbname.tablename para una sola tabla
username@hostLa cuenta de usuario objetivo

Privilegios comunes de MySQL

PrivilegioDescripción
SELECTLeer datos de tablas
INSERTAgregar nuevas filas a tablas
UPDATEModificar filas existentes
DELETEEliminar filas de tablas
CREATECrear nuevas bases de datos o tablas
DROPEliminar bases de datos o tablas
INDEXCrear o eliminar índices
ALTERModificar estructuras de tablas
ALL PRIVILEGESAcceso completo (usar con precaución)
GRANT OPTIONPermitir que el usuario otorgue privilegios a otros

Ejemplo: Otorga acceso completo a una base de datos específica

GRANT ALL PRIVILEGES ON exampledb.* TO 'newuser'@'%';

Ejemplo: Otorga acceso de solo lectura

GRANT SELECT ON exampledb.* TO 'readonly_user'@'localhost';

Ejemplo: Otorga privilegios específicos en una sola tabla

GRANT SELECT, INSERT, UPDATE ON exampledb.orders TO 'app_user'@'localhost';

Ejemplo: Otorga privilegios globales (usar con moderación)

GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;

> Advertencia: Otorgar ALL PRIVILEGES ON *.* le da a un usuario acceso equivalente a superusuario. Reserva esto solo para cuentas administrativas de confianza.

Paso 4: Vacía los privilegios

Después de hacer cambios en los permisos de usuario, es una buena práctica recargar las tablas de privilegios para que MySQL reconozca inmediatamente tus cambios:

FLUSH PRIVILEGES;

> Nota: En versiones modernas de MySQL (5.7.3+), FLUSH PRIVILEGES se activa automáticamente después de las declaraciones GRANT, REVOKE y CREATE USER. Sin embargo, ejecutarlo explícitamente después de ediciones manuales de las tablas del sistema mysql (vía INSERT o UPDATE) sigue siendo esencial.

Paso 5: Verifica los permisos del usuario

Siempre confirma que los permisos que has establecido sean correctos antes de poner una cuenta de usuario en producción.

Verifica las concesiones para un usuario específico

SHOW GRANTS FOR 'newuser'@'%';

Salida de ejemplo:

+--------------------------------------------------------------+
| Grants for newuser@%                                         |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `newuser`@`%`                          |
| GRANT ALL PRIVILEGES ON `exampledb`.* TO `newuser`@`%`       |
+--------------------------------------------------------------+

Lista todos los usuarios de MySQL

SELECT user, host FROM mysql.user;

Verifica los propios privilegios del usuario actual

SHOW GRANTS;

Paso 6: Revocación de permisos (cuando sea necesario)

Los permisos cambian con el tiempo. Cuando un usuario ya no necesita cierto acceso, revócalo rápidamente usando la declaración REVOKE:

Sintaxis

REVOKE privileges ON database.table FROM 'username'@'host';

Ejemplo: Revoca todos los privilegios de un usuario

REVOKE ALL PRIVILEGES ON exampledb.* FROM 'newuser'@'%';
FLUSH PRIVILEGES;

Ejemplo: Revoca un privilegio específico

REVOKE DELETE ON exampledb.orders FROM 'app_user'@'localhost';

Paso 7: Eliminación de un usuario (cuando sea necesario)

Si una cuenta de usuario ya no es necesaria, elimínala por completo para eliminar vectores de acceso innecesarios:

DROP USER 'newuser'@'%';

Este comando elimina la cuenta de usuario y todos los privilegios asociados en una sola operación.

Gestión de usuarios de MySQL en entornos alojados

Si estás gestionando MySQL en un entorno de alojamiento compartido o gestionado, el proceso puede diferir ligeramente según tu panel de control. Plataformas como cPanel, Plesk y DirectAdmin proporcionan interfaces gráficas para crear usuarios de MySQL y asignar permisos sin escribir SQL directamente.

Para usuarios que necesitan control completo de línea de comandos sin la sobrecarga de un servidor dedicado, los planes de VPS Hosting ofrecen el equilibrio ideal de rendimiento, flexibilidad y costo. Si estás ejecutando aplicaciones intensivas en bases de datos que requieren máximo rendimiento y recursos aislados, considera actualizar a un Servidor Dedicado para rendimiento garantizado.

Para proyectos más pequeños o entornos de desarrollo, los planes de Alojamiento web compartido típicamente incluyen acceso a phpMyAdmin, que proporciona una interfaz basada en navegador para la gestión de usuarios y bases de datos de MySQL.

Además, si tu aplicación maneja datos de usuario sensibles, emparejar tu servidor de base de datos con un Certificado SSL válido asegura que los datos transmitidos entre tu aplicación y servidor de base de datos permanezcan encriptados y protegidos contra la interceptación.

Mejores prácticas de seguridad para la gestión de usuarios de MySQL

Seguir los pasos técnicos es solo la mitad del trabajo. Aquí hay prácticas de seguridad críticas que todo administrador debe implementar:

  1. Nunca uses la cuenta raíz para conexiones de aplicaciones. Crea usuarios dedicados con menor privilegio para cada aplicación.
  2. Usa contraseñas fuertes y únicas para cada usuario de MySQL. Considera un gestor de contraseñas o bóveda de secretos.
  3. Restringe el acceso del host a localhost o direcciones IP específicas siempre que sea posible.
  4. Audita cuentas de usuario regularmente. Elimina cuentas que ya no estén activas o sean necesarias.
  5. Evita concesiones comodín (*.*) a menos que sea absolutamente necesario para tareas administrativas.
  6. Habilita el complemento de registro de auditoría de MySQL en servidores de producción para rastrear toda la actividad del usuario.
  7. Rota contraseñas periódicamente, especialmente después de cambios de personal o sospechas de compromisos.
  8. Usa SSL/TLS para conexiones de MySQL cuando te conectes a través de una red, incluso dentro de una LAN privada.

Referencia rápida: Comandos esenciales de gestión de usuarios de MySQL

TareaComando
Inicia sesión en MySQLmysql -u root -p
Crea un nuevo usuarioCREATE USER 'user'@'host' IDENTIFIED BY 'pass';
Otorga todos los privilegios en una BDGRANT ALL PRIVILEGES ON db.* TO 'user'@'host';
Otorga acceso de solo lecturaGRANT SELECT ON db.* TO 'user'@'host';
Vacía privilegios###PPT_
15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar