- 1 Introducción
- 2 Creación de usuarios en MariaDB
- 3 Gestión de privilegios en MariaDB
- 4 Eliminación de Usuarios en MariaDB
- 5 Errores comunes y soluciones (FAQ)
- 6 Conclusión
Introducción
1.1 ¿Quieres aprender a crear usuarios en MariaDB?
¿Alguna vez has querido crear un nuevo usuario en MariaDB y configurar los privilegios adecuados?
Por ejemplo, puede que te hayas encontrado con las siguientes situaciones:
- Ejecutaste
CREATE USERpero no puedes iniciar sesión - Concediste privilegios usando
GRANT, pero no se aplicaron - No estás seguro de cómo configurar los permisos correctos en un entorno de producción
- Quieres eliminar de forma segura usuarios innecesarios
Si estás enfrentando estos problemas, este artículo te ayudará a comprender completamente todo el proceso, desde la creación de usuarios hasta la gestión de privilegios y la eliminación de usuarios en MariaDB.
1.2 Qué aprenderás en este artículo
Este artículo ofrece una explicación detallada de los siguientes aspectos de la gestión de usuarios en MariaDB:
- Cómo crear y eliminar usuarios en MariaDB
- Cómo conceder y administrar privilegios (mejores prácticas para una configuración adecuada de permisos)
- Errores comunes y cómo resolverlos
- Mejores prácticas operativas para entornos de desarrollo y producción
Todos los temas se explican con ejemplos de SQL amigables para principiantes, lo que te permite aprender y practicar al mismo tiempo.
1.3 Público objetivo
Este artículo está dirigido a:
- Principiantes: quienes aprenden la gestión de usuarios en MariaDB por primera vez
- Ingenieros: quienes desean configurar permisos adecuados en entornos de desarrollo
- Administradores de bases de datos: quienes buscan reforzar la seguridad en entornos de producción
Aunque seas nuevo en MariaDB, esta guía brinda información práctica que puedes aplicar con confianza en operaciones reales.
Creación de usuarios en MariaDB
2.1 Comando básico para crear usuarios
En MariaDB, creas un nuevo usuario usando el comando CREATE USER.
Puedes especificar un nombre de usuario y una contraseña con la siguiente sintaxis:
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
Por ejemplo, para crear un usuario llamado yamada en localhost con la contraseña password123:
CREATE USER 'yamada'@'localhost' IDENTIFIED BY 'password123';
Después de ejecutar este comando, el usuario yamada será creado y podrá iniciar sesión solo desde localhost (el inicio de sesión está permitido únicamente en el propio servidor).
2.2 Ejemplos de creación de usuarios según el caso de uso
Al crear usuarios en MariaDB, puedes especificar desde dónde se permiten las conexiones usando el campo hostname.
Es importante configurar los ajustes de manera adecuada según tu caso de uso.
| Case | Command Example | Description |
|---|---|---|
| Local Environment (Development) | CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'password'; | User dedicated to development environment |
| Allow Remote Connections | CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password'; | Allow connections from any host (security caution required) |
| Allow Connection from Specific IP | CREATE USER 'admin'@'192.168.1.100' IDENTIFIED BY 'password'; | Restrict access to a specific IP address only |
| Allow Connection from Specific Subnet | CREATE USER 'network_user'@'192.168.1.%' IDENTIFIED BY 'password'; | Allow only machines with IP addresses in the 192.168.1.x range |
Usar '%' permite conexiones desde todos los hosts, pero
esto representa un riesgo de seguridad significativo y no se recomienda para entornos de producción.
En producción, lo mejor es especificar direcciones IP o configurar el acceso a través de una VPN.
2.3 Notas importantes al crear usuarios
Existen varias consideraciones importantes al crear usuarios.
(1) Verificar usuarios existentes
Antes de crear un usuario, es importante confirmar que no exista ya un usuario con el mismo nombre.
Puedes listar los usuarios registrados actualmente con el siguiente comando:
SELECT user, host FROM mysql.user;
Salida de ejemplo:
+---------+-----------+
| user | host |
+---------+-----------+
| root | localhost |
| yamada | localhost |
+---------+-----------+
Si ya existe un usuario con el mismo username@hostname, ejecutar CREATE USER producirá un error.
(2) Qué hacer si el usuario ya existe
En MariaDB, no puedes sobrescribir un usuario existente recreándolo.
Si el mismo usuario ya existe, utiliza una de las siguientes opciones:
- Cambiar la contraseña del usuario existente
ALTER USER 'yamada'@'localhost' IDENTIFIED BY 'newpassword123';
- Eliminar el usuario innecesario y crear uno nuevo
DROP USER 'yamada'@'localhost'; CREATE USER 'yamada'@'localhost' IDENTIFIED BY 'password123';
Gestión de privilegios en MariaDB
3.1 Conceder privilegios
Sintaxis básica
En MariaDB, puedes otorgar privilegios a un usuario utilizando el comando GRANT.
GRANT privilege ON database_name.table_name TO 'username'@'hostname';
Por ejemplo, para otorgar todos los privilegios en test_db al usuario yamada:
GRANT ALL PRIVILEGES ON test_db.* TO 'yamada'@'localhost';
Significado de este comando:
ALL PRIVILEGES: Otorga todos los privilegiostest_db.*: Se aplica a todas las tablas en la base de datostest_db'yamada'@'localhost': Se aplica al usuarioyamadaque inicia sesión desde localhost
3.2 Privilegios Comúnmente Usados
En MariaDB, puedes otorgar privilegios como los siguientes:
| Privilege | Description |
|---|---|
ALL PRIVILEGES | Grant all privileges |
SELECT | Read data |
INSERT | Insert data |
UPDATE | Update data |
DELETE | Delete data |
CREATE | Create new tables or databases |
DROP | Drop databases or tables |
GRANT OPTION | Grant privileges to other users |
ALTER | Modify table structure |
EXECUTE | Execute stored procedures or functions |
RELOAD | Reload server settings |
Si solo quieres permitir operaciones específicas, se recomienda otorgar privilegios individualmente en lugar de otorgar todo.
3.3 Configuraciones de Privilegios por Caso de Uso
Es importante asignar los privilegios adecuados para cada situación.
| Situation | Recommended Privileges | Command Example |
|---|---|---|
| WordPress Operator | SELECT, INSERT, UPDATE, DELETE | GRANT SELECT, INSERT, UPDATE, DELETE ON wp_db.* TO 'wp_user'@'localhost'; |
| Developer (Development Environment) | ALL PRIVILEGES | GRANT ALL PRIVILEGES ON dev_db.* TO 'dev_user'@'%'; |
| Read-Only User | SELECT only | GRANT SELECT ON analytics_db.* TO 'readonly'@'localhost'; |
| Database Administrator (Production Environment) | ALL PRIVILEGES (restricted) | GRANT ALL PRIVILEGES ON production_db.* TO 'admin'@'localhost'; |
En entornos de producción, evita otorgar ALL PRIVILEGES demasiado fácilmente.
3.4 Verificar Privilegios Otorgados
Para verificar los privilegios otorgados, utiliza el comando SHOW GRANTS.
SHOW GRANTS FOR 'username'@'hostname';
Por ejemplo, para verificar los privilegios del usuario yamada:
SHOW GRANTS FOR 'yamada'@'localhost';
Salida de ejemplo:
+-----------------------------------------------------------------------------------+
| Grants for yamada@localhost |
+-----------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE ON test_db.* TO 'yamada'@'localhost' |
+-----------------------------------------------------------------------------------+
Esto muestra los privilegios actualmente otorgados al usuario.
3.5 Revocar Privilegios (Eliminar Permisos)
Para revocar privilegios específicos de un usuario, utiliza el comando REVOKE.
Sintaxis Básica
REVOKE privilege ON database_name.table_name FROM 'username'@'hostname';
Por ejemplo, para revocar el privilegio UPDATE del usuario yamada:
REVOKE UPDATE ON test_db.* FROM 'yamada'@'localhost';
Revocar Todos los Privilegios
REVOKE ALL PRIVILEGES ON *.* FROM 'yamada'@'localhost';
3.6 Qué Hacer Cuando los Cambios de Privilegios No Tienen Efecto
En MariaDB, los cambios de privilegios pueden no aplicarse inmediatamente. Si eso sucede, ejecuta el siguiente comando:
FLUSH PRIVILEGES;
Ejecutar este comando obliga a MariaDB a recargar las tablas de privilegios para que tus cambios tengan efecto inmediatamente.

Eliminación de Usuarios en MariaDB
4.1 Eliminar un Usuario
Para eliminar un usuario de MariaDB, utiliza el comando DROP USER.
Sintaxis Básica
DROP USER 'username'@'hostname';
Por ejemplo, para eliminar el usuario yamada de localhost:
DROP USER 'yamada'@'localhost';
Después de ejecutar este comando, el usuario yamada será completamente eliminado del sistema MariaDB.
4.2 Qué Verificar Antes de Eliminar un Usuario
Antes de eliminar un usuario, hay algunas verificaciones importantes que debes realizar.
Ten cuidado de no eliminar usuarios necesarios por error.
(1) Verificar si el Usuario Objetivo Existe
En MariaDB, intentar eliminar un usuario inexistente causará un error.
Ejecuta el siguiente comando para confirmar que el usuario objetivo existe:
SELECT user, host FROM mysql.user;
Salida de ejemplo:
+---------+-----------+
| user | host |
+---------+-----------+
| root | localhost |
| yamada | localhost |
| admin | 192.168.1.100 |
+---------+-----------+
Si el usuario yamada aparece en esta lista, el usuario puede ser eliminado.
(2) Verificar si el Usuario Está Actualmente Conectado
En MariaDB, si el usuario que estás eliminando tiene actualmente una sesión activa,
la eliminación puede no tener efecto inmediatamente para esa sesión.
Verifica si el usuario está activo utilizando el siguiente comando:
SELECT user, host FROM information_schema.processlist;
Salida de ejemplo:
+---------+-----------+
| user | host |
+---------+-----------+
| yamada | localhost |
| root | localhost |
+---------+-----------+
En este ejemplo, el usuario yamada está actualmente activo, por lo que debe terminar la sesión antes de eliminarlo.
(3) Forzar la terminación de una sesión
Puede forzar la terminación de una sesión específica usando el comando KILL.
- Primero, verifique el ID del proceso (la columna
ID):SELECT id, user, host FROM information_schema.processlist;
Salida de ejemplo:
+----+---------+-----------+
| id | user | host |
+----+---------+-----------+
| 10 | yamada | localhost |
| 11 | root | localhost |
+----+---------+-----------+
- Si
yamadatiene el ID de proceso10, termínela con:KILL 10;
4.3 Limpieza después de la eliminación
Después de eliminar un usuario, puede quedar información residual de privilegios en la base de datos.
En esos casos, ejecute FLUSH PRIVILEGES para actualizar las tablas de privilegios.
FLUSH PRIVILEGES;
Ejecutar esto garantiza que la información del usuario eliminado se elimine completamente del sistema de bases de datos.
4.4 Notas importantes al eliminar usuarios
Tenga en cuenta los siguientes puntos al eliminar usuarios:
Los usuarios eliminados no pueden ser restaurados * Una vez que ejecute
DROP USER, el usuario eliminado no puede recuperarse. * Si se elimina por error, debe recrear el usuario usandoCREATE USER.Los privilegios pueden necesitar ser transferidos * Si el usuario eliminado era responsable de operaciones críticas de la base de datos, debe transferir los privilegios necesarios a otro usuario apropiado con antelación.
Tenga cuidado en entornos de producción * En entornos de producción, una eliminación repentina puede causar tiempo de inactividad del sistema o errores. * Se recomienda encarecidamente analizar el impacto con anticipación y crear una copia de seguridad.
Errores comunes y soluciones (FAQ)
Al gestionar usuarios en MariaDB, puede encontrarse con varios errores.
Esta sección explica los errores más comunes, sus causas y cómo resolverlos.
5.1 Preguntas frecuentes para principiantes
P1: ¿Cuál es la diferencia entre la gestión de usuarios en MariaDB y MySQL?
MariaDB y MySQL generalmente usan la misma sintaxis, pero existen algunas diferencias de funcionalidades.
| Comparison Item | MySQL | MariaDB |
|---|---|---|
CREATE USER | Supported | Supported |
SHOW GRANTS FOR | Supported | Supported |
DROP USER | Supported | Supported |
CREATE ROLE | MySQL 8.0 and later | MariaDB 10.0 and later |
MariaDB soporta CREATE ROLE, lo que permite la gestión de usuarios basada en roles.
P2: ¿Cuál es la diferencia entre localhost y %?
En la gestión de usuarios de MariaDB, especificar el nombre de host es fundamental.
localhost: Permite conexiones solo desde la máquina local%: Permite conexiones desde cualquier host (riesgo de seguridad)192.168.1.100: Permite conexiones solo desde una dirección IP específica192.168.1.%: Permite conexiones solo desde una subred específica (192.168.1.*)
5.2 Solución de problemas
P3: ¿Cómo corregir «ERROR 1396 (HY000): Operación CREATE USER falló»?
Causa: El usuario especificado ya existe, por lo que no se puede crear un nuevo usuario.
Solución: Verifique si el usuario existe y elimínelo o modifíquelo si es necesario.
- Verificar usuarios existentes
SELECT user, host FROM mysql.user WHERE user='yamada';
- Eliminar si no es necesario
DROP USER 'yamada'@'localhost';
- Cambiar la contraseña en su lugar
ALTER USER 'yamada'@'localhost' IDENTIFIED BY 'newpassword123';
P4: Los privilegios otorgados con GRANT no se aplican
Causa: La caché de privilegios de MariaDB no se ha actualizado.
Solución: Ejecute FLUSH PRIVILEGES para recargar los privilegios.
FLUSH PRIVILEGES;
P5: No se puede conectar de forma remota incluso usando %
Causa: Las conexiones remotas pueden estar restringidas en el archivo de configuración de MariaDB.
Solución:
- Edite el archivo de configuración
/etc/mysql/my.cnf(o/etc/mysql/mariadb.conf.d/50-server.cnf) y cambie el valor debind-addressa0.0.0.0.bind-address = 0.0.0.0
- Reinicie MariaDB
sudo systemctl restart mariadbGRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%' IDENTIFIED BY 'password';
Q6: Obtención del error «Access denied for user ‘user’@’host'»
Causa: El usuario no tiene los privilegios adecuados, o la contraseña es incorrecta.
Solución:
- Verificar los privilegios actuales
SHOW GRANTS FOR 'user'@'host';
- Conceder los privilegios apropiados
GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'host';
- Verificar que está iniciando sesión con la contraseña correcta
mysql -u user -p
Conclusión
La gestión de usuarios en MariaDB es esencial para mejorar la seguridad de la base de datos y la eficiencia operativa.
En este artículo, cubrimos en detalle creación de usuarios, gestión de privilegios, eliminación de usuarios y errores comunes con sus soluciones.
6.1 Resumen
① Creación de usuarios en MariaDB
- Crear nuevos usuarios usando el comando
CREATE USER - Restringir el acceso usando
@'hostname' - Siempre verificar los usuarios existentes antes de crear nuevos
② Gestión de privilegios en MariaDB
- Usar
GRANTpara asignar los privilegios mínimos necesarios - Usar
SHOW GRANTSpara verificar los privilegios actuales - Usar
REVOKEpara eliminar privilegios innecesarios - Aplicar los cambios con
FLUSH PRIVILEGES
③ Eliminación de usuarios en MariaDB
- Eliminar usuarios usando el comando
DROP USER - Verificar sesiones activas antes de la eliminación
- Limpiar la caché de privilegios usando
FLUSH PRIVILEGES
④ Errores comunes y soluciones
ERROR 1396 (HY000)→ Verificar usuarios existentes y eliminar si es necesario- Cambios de privilegios no aplicados → Ejecutar
FLUSH PRIVILEGES Access denied for user→ Verificar privilegios y contraseña- No se puede conectar de forma remota con
%→ Ajustar la configuraciónbind-address
6.2 Mejores prácticas para la gestión de usuarios en MariaDB
- Conceder solo los privilegios mínimos requeridos
- Evitar conceder casualmente
ALL PRIVILEGES - Restringir a los usuarios de producción a
SELECT, INSERT, UPDATE, DELETEcuando sea posible - Siempre verificar los cambios de privilegios
- Usar
SHOW GRANTSpara confirmar que las configuraciones son correctas - Analizar el impacto antes de eliminar usuarios
- Ser cauteloso en producción y crear copias de seguridad
- Aplicar prácticas de seguridad robustas
- Aplicar restricciones de IP para conexiones remotas
- Establecer una contraseña fuerte para el usuario root
- Eliminar regularmente usuarios y privilegios innecesarios
6.3 Reflexiones finales
A través de esta guía, ha aprendido todo, desde los conceptos básicos hasta técnicas avanzadas de gestión de usuarios en MariaDB.
Utilice este conocimiento para lograr una administración de bases de datos segura y eficiente.
Continuaremos compartiendo información útil relacionada con MariaDB, ¡así que manténgase atento! 🚀


