¿Cómo instalar y configurar un servidor base datos MariaDB?

Aprender Certificado Fundación Linux en España contenido Técnicos desde Cero en CiberED

MariaDB es un sistema de gestión de bases de datos relacional (RDBMS) derivado de MySQL, con el que mantiene alta compatibilidad.

21.1. Introducción a MariaDB

Los sistemas de gestión de BBDD son rápidos, robustos y ampliamente utilizados en aplicaciones web, sistemas de gestión y entornos empresariales. En la mayoría de distribuciones Linux, MariaDB ha reemplazado a MySQL como la opción por defecto.

Para el administrador de sistemas, es fundamental conocer cómo instalar MariaDB, asegurar la instalación inicial, crear bases de datos y usuarios, gestionar privilegios y realizar copias de seguridad. El examen LFCS espera que sepas poner en marcha un servidor MariaDB básico y administrarlo desde la línea de comandos.

21.2. Instalación de MariaDB

21.2.1. En Debian/Ubuntu

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

21.2.2. En RHEL/CentOS/Fedora

sudo yum install mariadb-server mariadb   # o dnf

Luego de la instalación, habilitar e iniciar el servicio:

  • Debian/Ubuntu: sudo systemctl enable --now mariadb
  • RHEL/CentOS: sudo systemctl enable --now mariadb

Verificar estado: sudo systemctl status mariadb.

21.3. Configuración inicial y seguridad

MariaDB viene con una instalación básica que incluye usuarios anónimos, cuentas root sin contraseña (en algunas versiones) y bases de datos de prueba. El script mysql_secure_installation (o mariadb-secure-installation en Debian/Ubuntu recientes) guía en la eliminación de estos riesgos.

Ejecutar:

sudo mysql_secure_installation

Las preguntas típicas son:

  1. Enter current password for root: si no hay contraseña, pulsar Enter.
  2. Switch to unix_socket authentication: en Debian/Ubuntu se recomienda Y para que root use autenticación por socket (más segura). En RHEL, se puede elegir n y establecer contraseña.
  3. Set root password?: si respondimos n a la anterior, aquí podemos poner contraseña a root.
  4. Remove anonymous users?: responder Y.
  5. Disallow root login remotely?: responder Y (por seguridad).
  6. Remove test database and access to it?: Y.
  7. Reload privilege tables now?: Y.

También se puede hacer manualmente con comandos SQL, pero el script es más rápido.

21.3.1. Autenticación de root

En Debian/Ubuntu, el usuario root de MariaDB está configurado para usar unix_socket por defecto, lo que significa que solo se puede acceder como root del sistema sin contraseña:

sudo mysql

En RHEL/CentOS, normalmente se puede usar mysql -u root con la contraseña establecida.

21.4. Acceso al servidor y comandos básicos

El cliente de línea de comandos es mysql (o mariadb en versiones nuevas). Para conectarse:

mysql -u usuario -p

Si el usuario es root y usa socket en Debian: sudo mysql.

Comandos SQL básicos:

  • Mostrar bases de datos: SHOW DATABASES;
  • Usar una base de datos: USE nombre;
  • Mostrar tablas: SHOW TABLES;
  • Describir una tabla: DESCRIBE tabla;
  • Salir: EXIT; o \q

21.5. Creación de bases de datos, usuarios y privilegios

21.5.1. Crear una base de datos

CREATE DATABASE nombre_db;

Con juego de caracteres UTF-8:

CREATE DATABASE nombre_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

21.5.2. Crear un usuario

CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'contraseña';
CREATE USER 'usuario'@'192.168.1.%' IDENTIFIED BY 'contraseña';

El @'host' especifica desde dónde puede conectarse. % es comodín para cualquier host.

21.5.3. Otorgar privilegios

GRANT ALL PRIVILEGES ON nombre_db.* TO 'usuario'@'localhost';

Para permisos más granulares:

GRANT SELECT, INSERT, UPDATE, DELETE ON nombre_db.* TO 'usuario'@'localhost';

Para aplicar los cambios:

FLUSH PRIVILEGES;

21.5.4. Ver privilegios de un usuario

SHOW GRANTS FOR 'usuario'@'localhost';

21.5.5. Revocar privilegios

REVOKE ALL PRIVILEGES ON nombre_db.* FROM 'usuario'@'localhost';

21.5.6. Eliminar usuario

DROP USER 'usuario'@'localhost';

21.6. Configuración del servidor

El archivo de configuración principal varía:

  • Debian/Ubuntu: /etc/mysql/mariadb.conf.d/50-server.cnf (o /etc/mysql/my.cnf que incluye los anteriores)
  • RHEL/CentOS: /etc/my.cnf o /etc/my.cnf.d/mariadb-server.cnf

Parámetros importantes:

[mysqld]
bind-address = 127.0.0.1     # Solo escuchar en localhost (por defecto)
port = 3306
datadir = /var/lib/mysql
socket = /run/mysqld/mysqld.sock
max_connections = 151
innodb_buffer_pool_size = 128M
  • bind-address: define en qué interfaz escucha. Para permitir conexiones remotas, poner 0.0.0.0 o la IP específica.
  • port: puerto TCP (3306 por defecto).
  • datadir: directorio de datos.
  • innodb_buffer_pool_size: memoria dedicada a InnoDB (importante para rendimiento).

Luego de realizar los cambios, reiniciar: sudo systemctl restart mariadb.

21.6.1. Permitir acceso remoto

Si se necesita acceso desde otros equipos, se debe:

  1. Editar bind-address = 0.0.0.0.
  2. Crear usuario con host remoto: CREATE USER 'usuario'@'192.168.1.100' IDENTIFIED BY '...';
  3. Abrir el puerto 3306 en el firewall.
  4. Reiniciar MariaDB.

21.7. Copias de seguridad y restauración

Las herramientas básicas son mysqldump (lógica) y copias físicas (copiar datadir con el servicio parado).

21.7.1. Backup de una base de datos

mysqldump -u root -p nombre_db > backup_db.sql

Incluir todas las bases de datos:

mysqldump -u root -p --all-databases > backup_all.sql

Opciones útiles: --single-transaction (para InnoDB sin bloquear), --routines, --triggers.

21.7.2. Restaurar

mysql -u root -p nombre_db < backup_db.sql

Si el backup incluye todas las bases de datos, sin especificar nombre.

21.7.3. Backup físico

Detener el servicio, copiar /var/lib/mysql y reiniciar. Es más rápido pero requiere parada.

21.8. Gestión de logs

Los logs de errores se encuentran en:

  • Debian/Ubuntu: /var/log/mysql/error.log
  • RHEL/CentOS: /var/log/mariadb/mariadb.log

También se pueden consultar con journalctl -u mariadb.

Se puede activar el log de consultas lentas en la configuración para optimización:

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

21.9. Solución de problemas comunes

ProblemaPosible causaSolución
“Can’t connect to local MySQL server through socket”Servicio no arrancadosystemctl start mariadb
“Access denied for user”Contraseña incorrecta o permisosVerificar usuario/host, restablecer contraseña
Error de socket en UbuntuEl socket no existe o permisosRevisar socket en config, permisos del directorio
No escucha en el puerto 3306bind-address mal configuradoAjustar y reiniciar
Error al arrancar tras cambiar configSintaxis incorrecta en archivo de configuraciónVerificar con mysqld --validate-config (o mariadbd --validate-config)

21.10. Ejercicios prácticos

  1. Instalación y seguridad: Instala MariaDB. Ejecuta mysql_secure_installation. Verifica que puedes acceder con sudo mysql (Debian) o con la contraseña de root.

  2. Creación de base de datos y usuario: Crea una base de datos gestion. Crea un usuario gestor con contraseña y otórgale todos los privilegios sobre gestion desde localhost. Verifica con SHOW GRANTS.

  3. Operaciones SQL básicas: Crea una tabla empleados con columnas id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100), departamento VARCHAR(50). Inserta algunos registros. Realiza una consulta SELECT.

  4. Configuración remota: Cambia bind-address a 0.0.0.0 y permite que un usuario se conecte desde otra máquina de tu red. Abre el firewall. Prueba la conexión remota con mysql -h ip_servidor -u usuario -p.

  5. Backup y restauración: Realiza un backup de gestion con mysqldump. Elimina la base de datos y restáurala a partir del backup. Verifica los datos.

  6. Logs y monitoreo: Activa el registro de consultas lentas. Simula una consulta lenta (puedes usar SELECT SLEEP(3); dentro de una consulta). Verifica que aparece en el log.

21.11. Resumen y consejos para LFCS

  • El comando de instalación y el servicio (mariadb) son lo primero; no confundir con MySQL.
  • Después de instalar, siempre ejecutar mysql_secure_installation para eliminar cuentas inseguras.
  • Conocer la sintaxis básica de SQL para crear bases de datos, usuarios y otorgar privilegios.
  • La gestión de backups con mysqldump es imprescindible.
  • Para acceso remoto, se debe configurar bind-address, firewall y usuario con host remoto.
  • En el examen, es probable que se pida instalar MariaDB, crear una base de datos y un usuario con permisos específicos. Practica estos pasos.

Con este capítulo ya sabes desplegar y administrar un servidor de bases de datos MariaDB. En el siguiente capítulo nos enfocaremos en la configuración de comparticiones NFS con Autofs, que automatiza el montaje de recursos de red bajo demanda.

Vistas: 1

Descubre más desde CIBERED

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Scroll al inicio