Cómo instalar MariaDB en Ubuntu (20.04 / 22.04 / 24.04) – Guía completa de configuración y seguridad

目次

Forma más rápida de instalar MariaDB en Ubuntu (compatible con 20.04 / 22.04 / 24.04)

Si deseas comenzar a usar MariaDB en Ubuntu de inmediato, simplemente sigue los pasos a continuación para completar la instalación y la verificación del arranque. A menos que tengas una razón específica, instalar desde el repositorio predeterminado de Ubuntu es la opción más segura y estable.

① Actualizar la información de paquetes

sudo apt update
sudo apt upgrade -y

② Instalar MariaDB

sudo apt install -y mariadb-server mariadb-client

No se requiere ninguna configuración especial durante la instalación. Al finalizar, el servicio de MariaDB se iniciará automáticamente.

③ Verificar que MariaDB está en ejecución

sudo systemctl status mariadb

Si se muestra active (running), MariaDB está funcionando correctamente.

④ Habilitar el inicio automático (generalmente no es necesario, pero se recomienda confirmar)

sudo systemctl enable mariadb

⑤ Conectarse a MariaDB y verificar su funcionamiento

sudo mysql

Si ves el siguiente prompt, la instalación fue exitosa:

MariaDB [(none)]>

Para salir, escribe exit;.

Inicialización de seguridad obligatoria después de la instalación

Inmediatamente después de la instalación, MariaDB solo tiene configuraciones de seguridad mínimas aplicadas. Asegúrate de ejecutar el siguiente comando:

sudo mysql_secure_installation

Generalmente, se recomiendan las siguientes respuestas:

  • Eliminar usuarios anónimos → Y
  • No permitir el acceso remoto del usuario root → Y
  • Eliminar la base de datos de prueba → Y
  • Recargar las tablas de privilegios → Y

Con esto se completa la configuración de un entorno seguro de MariaDB en Ubuntu.

Versión de MariaDB instalada según la versión de Ubuntu

  • Ubuntu 20.04 → serie MariaDB 10.3
  • Ubuntu 22.04 → serie MariaDB 10.6
  • Ubuntu 24.04 → serie MariaDB 10.11 (LTS)

Para la mayoría de los usuarios, la versión predeterminada de Ubuntu es suficiente. Solo considera el repositorio oficial si necesitas las últimas funcionalidades.

Verificaciones rápidas si la instalación falla o el servicio no se inicia

  • Revisar errores con sudo systemctl status mariadb
  • Revisar registros detallados con sudo journalctl -xe
  • Verificar espacio en disco con df -h

En la mayoría de los casos, el problema es falta de espacio en disco o un error tipográfico en un archivo de configuración.

Elegir la versión adecuada de MariaDB para tu versión de Ubuntu

Al usar MariaDB en Ubuntu, la opción más segura en la mayoría de los casos es la versión del repositorio predeterminado. Las actualizaciones de seguridad y la compatibilidad de dependencias se mantienen automáticamente, lo que la hace ideal para usuarios principiantes e intermedios.

Versión del repositorio predeterminado de Ubuntu (recomendado)

  • Ubuntu 20.04 → serie MariaDB 10.3
  • Ubuntu 22.04 → serie MariaDB 10.6
  • Ubuntu 24.04 → serie MariaDB 10.11 (LTS)

A menos que tengas un requisito específico, estas versiones son totalmente prácticas para entornos de producción.

Si necesitas la versión más reciente (agregar el repositorio oficial de MariaDB)

Si necesitas las funcionalidades más nuevas, puedes agregar el repositorio oficial de MariaDB. Dado que apt-key está obsoleto, se utiliza el método signed-by.

① Guardar la clave GPG

sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://mariadb.org/mariadb_release_signing_key.asc \
  | sudo gpg --dearmor -o /etc/apt/keyrings/mariadb.gpg

② Verificar el nombre en clave de tu Ubuntu

lsb_release -cs

Ejemplos:

  • 20.04 → focal
  • 22.04 → jammy
  • 24.04 → noble

③ Agregar el repositorio oficial (ejemplo: serie 10.11)

echo "deb [signed-by=/etc/apt/keyrings/mariadb.gpg] \
https://mirror.mariadb.org/repo/10.11/ubuntu \
$(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/mariadb.list

④ Actualizar paquetes e instalar

sudo apt update
sudo apt install mariadb-server mariadb-client

Notas al usar el repositorio oficial

  • Puedes usar funcionalidades más nuevas que la versión predeterminada de Ubuntu
  • Existe un riesgo futuro de conflictos de dependencias
  • Se requiere una prueba exhaustiva para servidores de producción

Para producción, decide claramente si priorizas la estabilidad o las funcionalidades más recientes.

Cómo comprobar la versión de MariaDB instalada actualmente

mysql --version

Ejemplo:

mysql  Ver 15.1 Distrib 10.6.16-MariaDB

Al confirmar explícitamente la versión, la solución de problemas y el trabajo de migración se vuelven mucho más fáciles.

Guía completa para la configuración inicial de seguridad de MariaDB (mysql_secure_installation)

Inmediatamente después de instalar MariaDB, solo se aplican configuraciones de seguridad mínimas. Para operar de forma segura, asegúrate de ejecutar el siguiente comando:

sudo mysql_secure_installation

Al ejecutarlo, aparecerán varios mensajes. En la mayoría de los casos, se recomiendan las siguientes respuestas.

Respuestas recomendadas

  • Introduzca la contraseña actual para root: → Pulse Enter (no establecida en la primera ejecución)
  • ¿Cambiar a autenticación unix_socket? → S (Recomendado en Ubuntu)
  • ¿Cambiar la contraseña de root? → N (Si se usa autenticación unix_socket)
  • ¿Eliminar usuarios anónimos? → S
  • ¿Desactivar el acceso remoto de root? → S
  • ¿Eliminar la base de datos de prueba y su acceso? → S
  • ¿Recargar las tablas de privilegios ahora? → S

Esto completa la configuración básica de seguridad.

Por qué no puedes iniciar sesión como root (Error de acceso denegado)

En Ubuntu, el usuario root usa autenticación unix_socket por defecto. Por lo tanto, el inicio de sesión estándar basado en contraseña no funcionará.

Síntoma de ejemplo

mysql -u root -p

Access denied for user 'root'@'localhost'

Método de inicio de sesión correcto (predeterminado en Ubuntu)

sudo mysql

Este es el método más seguro y recomendado.

Cómo cambiar root a autenticación por contraseña (solo si es necesario)

Solo cambia el método de autenticación si necesitas conectarte como root desde herramientas o aplicaciones externas.

① Connect to MariaDB

sudo mysql

② Cambiar el plugin de autenticación

ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'StrongPasswordHere';

FLUSH PRIVILEGES;

③ Confirmar el cambio

SELECT user, host, plugin FROM mysql.user;

Si se muestra mysql_native_password, el cambio se realizó con éxito.

Cómo comprobar el método de autenticación actual

sudo mysql -e "SELECT user, host, plugin FROM mysql.user;"

Principales métodos de autenticación:

  • unix_socket → predeterminado en Ubuntu, seguro
  • mysql_native_password → autenticación basada en contraseña

A menos que haya una razón específica, lo más seguro es mantener root usando autenticación unix_socket.

Errores comunes y soluciones

ERROR 1698 (28000): Access denied for user ‘root’@’localhost’

  • Causa: Intentar iniciar sesión con contraseña
  • Solución: Iniciar sesión usando sudo mysql

mysql_secure_installation Not Found

  • Verifica con which mysql_secure_installation
  • Si no está instalado, ejecuta sudo apt install mariadb-server

Configurar la codificación de caracteres a utf8mb4 (evitar texto corrupto)

Para manejar de forma segura texto multilingüe y emojis en MariaDB, se recomienda usar utf8mb4. Sin esta configuración, podrías encontrar problemas de codificación o pérdida de datos.

① Edit the Configuration File

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Agrega o modifica las siguientes líneas en la sección [mysqld]:

[mysqld]
character-set-server = utf8mb4
collation-server     = utf8mb4_general_ci

② Restart MariaDB

sudo systemctl restart mariadb

③ Verify the Settings

sudo mysql -e "SHOW VARIABLES LIKE 'character_set%';"

Si se muestra utf8mb4, la configuración fue exitosa.

Especificar utf8mb4 al crear una base de datos (recomendado)

Si deseas definir explícitamente el conjunto de caracteres sin importar la configuración global, especifícalo al crear la base de datos.

CREATE DATABASE sample_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

Todas las tablas creadas dentro de esta base de datos heredarán utf8mb4.

Crear un usuario de aplicación y otorgar permisos

En entornos de producción, nunca uses el usuario root para conexiones de aplicaciones. Crea un usuario dedicado y otorga solo los privilegios mínimos necesarios.

① Iniciar sesión en MariaDB

sudo mysql

② Crear un usuario (conexión local)

CREATE USER 'app_user'@'localhost'
IDENTIFIED BY 'StrongPasswordHere';

③ Conceder privilegios a la base de datos

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'localhost';

FLUSH PRIVILEGES;

Crear un usuario de acceso remoto (solo si es necesario)

Configure esto solo si necesita conectarse desde un servidor externo o un entorno en la nube.

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

Nota: El comodín “%” permite conexiones desde cualquier host. En entornos de producción, especificar una dirección IP concreta es más seguro.

Cómo comprobar usuarios y privilegios actuales

SELECT user, host FROM mysql.user;

SHOW GRANTS FOR 'app_user'@'localhost';

Errores comunes de permisos y soluciones

Acceso denegado para el usuario ‘app_user’

  • Especificación de host incorrecta (diferencia entre localhost y %)
  • No se ejecutó FLUSH PRIVILEGES
  • Nombre de base de datos incorrecto al conectar

Base de datos desconocida

  • Error tipográfico en el nombre de la base de datos
  • No se concedieron privilegios para la base de datos objetivo

Cómo permitir conexiones remotas en MariaDB (solución cuando falla el acceso externo)

Por defecto, MariaDB permite solo conexiones locales. Si necesita conectarse desde un servidor externo o un entorno en la nube, configure los siguientes ajustes.

① Cambiar bind-address

Edite el archivo de configuración:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Busque la siguiente línea:

bind-address = 127.0.0.1

Para permitir conexiones externas, cámbiela a:

bind-address = 0.0.0.0

Después de guardar, reinicie MariaDB:

sudo systemctl restart mariadb

② Abrir el puerto 3306 en el firewall

Si está usando UFW en Ubuntu:

sudo ufw allow 3306
sudo ufw reload

Para mayor seguridad, especifique la dirección IP de origen:

sudo ufw allow from 192.168.1.10 to any port 3306

③ Crear un usuario de acceso remoto

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

Para una mejor seguridad:

CREATE USER 'app_user'@'192.168.1.10'
IDENTIFIED BY 'StrongPasswordHere';

Lista de verificación si no puede conectarse externamente

1. ¿Está MariaDB en ejecución?

sudo systemctl status mariadb

2. ¿Está escuchando el puerto 3306?

sudo ss -tulnp | grep 3306

Si muestra 0.0.0.0:3306, está escuchando correctamente en todas las interfaces.

3. Si está usando un entorno en la nube (AWS / GCP / VPS)

  • Asegúrese de que el puerto 3306 esté abierto en el grupo de seguridad
  • Confirme que ningún firewall externo esté bloqueando la conexión

4. Causas según el mensaje de error

No se puede conectar al servidor MySQL

  • El puerto está cerrado
  • bind-address no se cambió
  • El firewall está bloqueando la conexión

Acceso denegado para el usuario

  • Especificación de host del usuario incorrecta
  • Contraseña incorrecta
  • Privilegios no concedidos

Tiempo de conexión agotado

  • Configuraciones de seguridad del lado de la nube
  • Problemas de enrutamiento de red

Notas importantes de seguridad

  • Evite usar “%” en entornos de producción
  • Utilice acceso VPN siempre que sea posible
  • Considere habilitar conexiones SSL/TLS
  • Nunca permita el inicio de sesión remoto como root

Solución de problemas cuando MariaDB no arranca (error de fallo)

① Verificar el estado del servicio

sudo systemctl status mariadb

② Revisar los registros detallados

sudo journalctl -xe
sudo cat /var/log/mysql/error.log

③ Causas comunes

  • Errores de sintaxis en el archivo de configuración
  • Espacio en disco insuficiente
  • Conflicto de puertos (MySQL ya está en ejecución)

④ Verificar el espacio en disco

df -h

Resumen de causas del error “Acceso denegado”

  • Contraseña incorrecta
  • Especificación de host incorrecta (diferencia entre localhost y %)
  • No se ejecutó FLUSH PRIVILEGES
  • Intentar iniciar sesión estándar como root (requiere sudo mysql)

Mejoras básicas de rendimiento (para principiantes)

Advanced tuning is not required, but at minimum, confirm the following settings.

① Enable Slow Query Log

Add the following to 50-server.cnf:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

Restart MariaDB:

sudo systemctl restart mariadb

② Check Index Usage

Slow queries may be missing proper indexes.

EXPLAIN SELECT * FROM sample_table WHERE column_name = 'value';

③ Check Server Resources

top
htop

If memory is insufficient, consider upgrading your server plan.

Frequently Asked Questions (FAQ)

How can I lock the MariaDB version on Ubuntu 22.04?

Use apt-mark hold mariadb-server.

How do I reset the root password if I forgot it?

You can reset it by starting in safe mode and reconfiguring the password. See our dedicated guide for detailed steps.

How do I change the MariaDB port number?

Modify 50-server.cnf to something like port = 3307, then restart the service.

Conclusion: Using MariaDB Safely on Ubuntu

  • Using the default repository version is the safest option
  • Always run mysql_secure_installation
  • Never use root for application connections
  • Enable remote access only when necessary
  • When troubleshooting, checking logs is the top priority

By following these steps, you can build a secure and production-ready MariaDB environment on Ubuntu.