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:
- Enter current password for root: si no hay contraseña, pulsar Enter.
- Switch to unix_socket authentication: en Debian/Ubuntu se recomienda
Ypara que root use autenticación por socket (más segura). En RHEL, se puede elegirny establecer contraseña. - Set root password?: si respondimos
na la anterior, aquí podemos poner contraseña a root. - Remove anonymous users?: responder
Y. - Disallow root login remotely?: responder
Y(por seguridad). - Remove test database and access to it?:
Y. - 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.cnfque incluye los anteriores) - RHEL/CentOS:
/etc/my.cnfo/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, poner0.0.0.0o 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:
- Editar
bind-address = 0.0.0.0. - Crear usuario con host remoto:
CREATE USER 'usuario'@'192.168.1.100' IDENTIFIED BY '...'; - Abrir el puerto 3306 en el firewall.
- 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
| Problema | Posible causa | Solución |
|---|---|---|
| “Can’t connect to local MySQL server through socket” | Servicio no arrancado | systemctl start mariadb |
| “Access denied for user” | Contraseña incorrecta o permisos | Verificar usuario/host, restablecer contraseña |
| Error de socket en Ubuntu | El socket no existe o permisos | Revisar socket en config, permisos del directorio |
| No escucha en el puerto 3306 | bind-address mal configurado | Ajustar y reiniciar |
| Error al arrancar tras cambiar config | Sintaxis incorrecta en archivo de configuración | Verificar con mysqld --validate-config (o mariadbd --validate-config) |
21.10. Ejercicios prácticos
Instalación y seguridad: Instala MariaDB. Ejecuta
mysql_secure_installation. Verifica que puedes acceder consudo mysql(Debian) o con la contraseña de root.Creación de base de datos y usuario: Crea una base de datos
gestion. Crea un usuariogestorcon contraseña y otórgale todos los privilegios sobregestiondesdelocalhost. Verifica conSHOW GRANTS.Operaciones SQL básicas: Crea una tabla
empleadoscon columnasid INT AUTO_INCREMENT PRIMARY KEY,nombre VARCHAR(100),departamento VARCHAR(50). Inserta algunos registros. Realiza una consulta SELECT.Configuración remota: Cambia
bind-addressa0.0.0.0y permite que un usuario se conecte desde otra máquina de tu red. Abre el firewall. Prueba la conexión remota conmysql -h ip_servidor -u usuario -p.Backup y restauración: Realiza un backup de
gestionconmysqldump. Elimina la base de datos y restáurala a partir del backup. Verifica los datos.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_installationpara 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
mysqldumpes 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.
Descubre más desde CIBERED
Suscríbete y recibe las últimas entradas en tu correo electrónico.
