Cómo listar y gestionar usuarios de MariaDB: Guía completa de cuentas de usuario y privilegios

目次

1. Introducción

MariaDB es uno de los sistemas de gestión de bases de datos más utilizados hoy en día, conocido por su facilidad de uso y alto rendimiento. Entre sus muchas características, la gestión de usuarios desempeña un papel crítico. Al administrar correctamente los usuarios, puedes garantizar la seguridad de la base de datos y lograr operaciones eficientes.

Este artículo se centra en cómo comprobar la lista de usuarios en MariaDB. En concreto, explicaremos cómo obtener una lista de usuarios mediante comandos SQL, las diferencias y ventajas de cada método, así como la configuración de privilegios relacionada y consideraciones importantes.

Esta guía está escrita para ser útil no solo para principiantes en MariaDB, sino también para quienes gestionan entornos de producción. Asegúrate de leer hasta el final.

2. Cómo comprobar la lista de usuarios en MariaDB

Existen varias formas de comprobar la lista de usuarios en MariaDB. Cada método tiene sus propias características, y elegir el adecuado según tu propósito permite una gestión de usuarios eficiente. A continuación, explicamos en detalle tres métodos representativos.

2.1 Usando la tabla mysql.user

La forma más básica de consultar la información de usuarios en MariaDB es referenciar directamente la tabla mysql.user. Esta tabla almacena toda la información de las cuentas de usuario.

Comando de ejemplo

Puedes ver la lista de usuarios ejecutando el siguiente SQL:

SELECT Host, User FROM mysql.user;

Explicación

  • Host : Representa el nombre de host desde el cual el usuario tiene permitido conectarse.
  • User : El nombre de usuario registrado en MariaDB.

Escenarios de uso

  • Cuando deseas ver todos los usuarios en una lista.
  • Cuando quieres comprobar qué usuarios pueden conectarse desde un host específico.

Notas importantes

  • Necesitas privilegios suficientes (normalmente privilegios de root) para referenciar la tabla mysql.user.
  • En algunas versiones, el uso directo de mysql.user puede no ser recomendado. Siempre verifica la documentación oficial para tu versión.

2.2 Usando el comando SHOW GRANTS

Puedes usar el comando SHOW GRANTS para comprobar los privilegios otorgados a un usuario específico.

Comando de ejemplo

Especifica el usuario como se muestra a continuación para mostrar sus privilegios:

SHOW GRANTS FOR 'username'@'hostname';

Explicación

  • Puedes revisar los privilegios detallados de cada usuario.
  • Ejemplo de salida:
    GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost';
    

Escenarios de uso

  • Cuando deseas verificar si la configuración de privilegios de un usuario es correcta.
  • Cuando solucionas problemas causados por una configuración de privilegios incorrecta.

Notas importantes

  • Si no dispones de privilegios suficientes, no podrás ejecutar este comando.

2.3 Usando information_schema.USER_PRIVILEGES

MariaDB incluye una base de datos del sistema llamada information_schema. Al consultar la tabla USER_PRIVILEGES dentro de ella, puedes mostrar la información de privilegios de todos los usuarios.

Comando de ejemplo

SELECT * FROM information_schema.USER_PRIVILEGES;

Explicación

  • Este método permite revisar los privilegios globales de cada usuario.
  • La salida incluye información como:
  • GRANTEE : Nombre de usuario y host.
  • PRIVILEGE_TYPE : Tipo de privilegio otorgado.
  • IS_GRANTABLE : Si el privilegio puede ser concedido a otros.

Escenarios de uso

  • Cuando deseas revisar los privilegios de varios usuarios a la vez.
  • Cuando realizas auditorías de la configuración de privilegios globales.

Notas importantes

  • Algunos privilegios pueden no ser completamente visibles en esta tabla.

Resumen

Al utilizar adecuadamente estos métodos, puedes gestionar eficazmente las cuentas de usuario y la información de privilegios en MariaDB. Cada enfoque tiene sus fortalezas, por lo que seleccionar el adecuado según tu objetivo específico es esencial.

3. Gestión detallada de usuarios de MariaDB

MariaDB te permite revisar información detallada de los usuarios y gestionar privilegios de manera eficiente. En esta sección, explicamos las operaciones esenciales requeridas para una correcta gestión de usuarios.

3.1 Comprobación de la información del usuario

En MariaDB, puedes usar el comando SHOW CREATE USER para consultar información detallada sobre un usuario específico. Este comando reproduce la sentencia utilizada cuando se creó el usuario.

Ejemplo de comando

Ejecuta el siguiente SQL para mostrar información detallada del usuario especificado:

SHOW CREATE USER 'username'@'hostname';

Explicación

Este comando se usa para verificar el método de autenticación del usuario y otros atributos. Ejemplo de salida:

CREATE USER 'user1'@'localhost' IDENTIFIED VIA mysql_native_password USING '***';

Escenarios de uso

  • Cuando deseas confirmar el método de autenticación de un usuario.
  • Al revisar los atributos del usuario en busca de posibles problemas.

Notas importantes

  • Se requieren los privilegios adecuados para ejecutar este comando (normalmente privilegios de root).

3.2 Configuración y modificación de privilegios de usuario

MariaDB permite una configuración flexible de privilegios para cada usuario. Puedes usar los comandos GRANT y REVOKE para gestionar los privilegios.

Concediendo privilegios

El siguiente SQL concede privilegios específicos a un usuario designado:

GRANT SELECT, INSERT ON database_name.* TO 'username'@'hostname';

Revocando privilegios

Para eliminar privilegios innecesarios, usa el comando REVOKE:

REVOKE INSERT ON database_name.* FROM 'username'@'hostname';

Explicación

  • El comando GRANT asigna privilegios de operación para bases de datos o tablas específicas.
  • El comando REVOKE elimina privilegios que ya no son necesarios.

Escenarios de uso

  • Al configurar privilegios para un nuevo usuario.
  • Al eliminar privilegios innecesarios para mejorar la seguridad.

Notas importantes

  • Una configuración incorrecta de privilegios puede aumentar los riesgos de seguridad, por lo que debes operar con cuidado.

3.3 Eliminación de un usuario

Eliminar usuarios innecesarios mejora la seguridad de la base de datos. Usa el comando DROP USER para borrar un usuario.

Ejemplo de comando

Ejecuta el siguiente SQL para eliminar un usuario especificado:

DROP USER 'username'@'hostname';

Explicación

  • Cuando se elimina un usuario, todos los privilegios concedidos a ese usuario se eliminan simultáneamente.
  • Si tiene éxito, MariaDB muestra un mensaje «Query OK».

Escenarios de uso

  • Cuando se elimina permanentemente un usuario innecesario de la base de datos.
  • Al limpiar cuentas no utilizadas por motivos de seguridad.

Notas importantes

  • Si el usuario está conectado actualmente, pueden ocurrir errores inesperados.
  • La eliminación de un usuario no se puede deshacer, así que confirma cuidadosamente antes de ejecutar.

Resumen

Una gestión adecuada de usuarios en MariaDB es esencial para mejorar tanto la seguridad como la eficiencia operativa. Al revisar la información de los usuarios, configurar y modificar privilegios, y eliminar usuarios innecesarios, puedes mantener un entorno de base de datos seguro y eficiente.

4. Consideraciones clave para la gestión de usuarios en MariaDB

Para gestionar adecuadamente los usuarios de MariaDB, debes prestar atención a varios puntos importantes. Esta sección explica cómo manejar privilegios insuficientes, consideraciones clave de seguridad y diferencias entre versiones.

4.1 Cómo manejar privilegios insuficientes

Consultar la lista de usuarios o los privilegios en MariaDB requiere permisos suficientes. Si una operación falla por privilegios insuficientes, puedes probar los siguientes enfoques.

Error de ejemplo

Puedes ver un error como el siguiente:

ERROR 1045 (28000): Access denied for user 'user1'@'localhost'

Cómo solucionarlo

  1. Confirma que has iniciado sesión con el usuario correcto
  • Si faltan los privilegios requeridos (por ejemplo, el privilegio SELECT), puede que no puedas consultar la tabla mysql.user.
  • Como solución alternativa, intenta iniciar sesión como usuario root y repite la operación.
  1. Inicia sesión como usuario root
  • Iniciar sesión como root permite la mayoría de las operaciones administrativas: bash mysql -u root -p
  1. Reconfigura los privilegios
  • Concede los privilegios necesarios si es necesario: sql GRANT ALL PRIVILEGES ON *.* TO 'username'@'hostname'; FLUSH PRIVILEGES;

Notas importantes

  • Evite otorgar más privilegios de los necesarios. Los privilegios excesivos aumentan el riesgo de seguridad.

4.2 Mejores prácticas de seguridad

La seguridad debe ser la máxima prioridad en la gestión de usuarios de MariaDB. A continuación se presentan los puntos clave a tener en cuenta.

Eliminar usuarios no utilizados

  • Dejar cuentas de usuario sin usar puede convertirlas en objetivos potenciales para los atacantes.
  • Revise periódicamente los usuarios y elimine las cuentas innecesarias:
    DROP USER 'username'@'hostname';
    

Utilizar una política de contraseñas robusta

  • Al crear usuarios, establezca contraseñas difíciles de adivinar:
    CREATE USER 'user1'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    

Restringir el acceso externo

  • Limite los hosts que pueden conectarse para evitar accesos externos innecesarios:
    CREATE USER 'user1'@'192.168.0.1' IDENTIFIED BY 'password';
    

Monitorizar los registros

  • Revise regularmente los registros de MariaDB (por ejemplo, general_log y error_log) para detectar accesos sospechosos.

4.3 Diferencias entre versiones de MariaDB

El comportamiento de MariaDB y las prácticas recomendadas pueden variar según la versión, por lo que debe ajustar su enfoque en consecuencia.

Deprecación del acceso directo a mysql.user

  • En versiones más recientes, consultar directamente la tabla mysql.user puede estar desaconsejado. En ese caso, use SHOW GRANTS o information_schema en su lugar.

Complementos de autenticación

  • Dependiendo de la versión, el complemento de autenticación predeterminado puede variar. Las versiones antiguas suelen usar mysql_native_password, mientras que las versiones más nuevas pueden recomendar opciones más seguras como caching_sha2_password.

Pasos recomendados

  • Verifique su versión de MariaDB:
    SELECT VERSION();
    
  • Consulte la documentación oficial de su versión y siga las mejores prácticas más recientes.

Resumen

Al comprender estas consideraciones clave para la gestión de usuarios de MariaDB, podrá reforzar la seguridad y mejorar la eficiencia operativa. Preste atención a los problemas de privilegios y a las diferencias específicas de cada versión, y adopte medidas de seguridad actualizadas.

5. Preguntas frecuentes (FAQ)

A continuación se presentan preguntas y respuestas comunes relacionadas con la gestión de usuarios de MariaDB. Esta sección cubre la configuración de privilegios, el manejo de errores y los problemas con el usuario root que suelen enfrentar los administradores.

Q1: ¿Cómo puedo otorgar privilegios solo a un usuario específico?

Respuesta

Puede usar el comando GRANT para conceder únicamente los privilegios necesarios a un usuario específico. A continuación se muestra un ejemplo que otorga privilegios SELECT e INSERT en una base de datos concreta:

GRANT SELECT, INSERT ON database_name.* TO 'username'@'hostname';
FLUSH PRIVILEGES;

Puntos clave

  • Al especificar database_name.*, los privilegios se aplican a todas las tablas dentro de esa base de datos.
  • Ejecute FLUSH PRIVILEGES; para asegurarse de que los cambios surtan efecto.

Q2: ¿Cuáles son las causas y soluciones cuando la lista de usuarios no se muestra?

Respuesta

Si no puede ver la lista de usuarios, las causas más comunes son las siguientes.

  1. Privilegios insuficientes
  • Si faltan los privilegios requeridos (por ejemplo, el privilegio SELECT), es posible que no pueda consultar la tabla mysql.user.
  • Como solución alternativa, intente iniciar sesión como usuario root y repita la operación.
  1. Uso del comando correcto
  • En versiones más recientes de MariaDB, mysql.user puede estar desaconsejado. En ese caso, utilice el siguiente comando: SELECT User, Host FROM information_schema.USER_PRIVILEGES;
  1. Verificar la versión de MariaDB
  • Dado que los métodos recomendados pueden variar según la versión, primero compruebe su versión actual: SELECT VERSION();

Q3: ¿Qué debo hacer si el usuario root está bloqueado?

Respuesta

Si el usuario root está bloqueado y no puede iniciar sesión, siga estos pasos.

  1. Iniciar MariaDB en modo seguro
  • Detenga el servidor y reinícielo en modo seguro: bash mysqld_safe --skip-grant-tables &
  1. Restablecer la contraseña de root
  • Inicie sesión en MariaDB en modo seguro, luego restablezca la contraseña de root usando el siguiente comando: UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES;
  1. Salga del modo seguro y reinicie normalmente
  • Reinicie MariaDB y vuelva a las operaciones normales.

Notas Importantes

Debido a que la autenticación se omite en modo seguro, asegúrese de que ninguna tercera parte pueda acceder al servidor durante este tiempo.

Q4: Obtuve un error al eliminar un usuario. ¿Qué debo hacer?

Respuesta

Si encuentra un error al eliminar un usuario, las siguientes son causas comunes.

  1. El usuario que intentó eliminar está actualmente en uso
  • Si el usuario está actualmente conectado, la eliminación puede fallar.
  • Como solución alternativa, termine la conexión del usuario de manera forzada: SHOW PROCESSLIST; KILL connection_id;
  1. Existen objetos dependientes
  • Si hay objetos asociados con el usuario (por ejemplo, vistas o procedimientos almacenados), es posible que necesite eliminarlos primero.

Q5: ¿Cómo puedo guardar la salida de SHOW GRANTS?

Respuesta

Puede guardar la salida de SHOW GRANTS en un archivo para revisarla más tarde.

  1. Guardar en un archivo
  • Use el cliente mysql en la línea de comandos y redirija la salida: bash mysql -u root -p -e "SHOW GRANTS FOR 'username'@'hostname';" > grants_output.txt
  1. Guardar como declaraciones SQL
  • Guarde la salida en un archivo de texto para poder reutilizarla más tarde.

Resumen

En esta sección de FAQ, abordamos preguntas comunes que surgen frecuentemente en la gestión de usuarios de MariaDB. Use estas respuestas para solucionar problemas y mejorar su eficiencia operativa.