Configurar un servidor de bases de datos seguro en Ubuntu es una base fundamental para crear aplicaciones escalables y fiables. Tanto si despliegas aplicaciones web dinámicas como si gestionas cargas de trabajo empresariales complejas, elegir la solución de base de datos adecuada es esencial. MySQL y MariaDB son dos de los sistemas de bases de datos de código abierto más populares, conocidos por su rendimiento, flexibilidad y fiabilidad.
En esta guía, te guiaremos paso a paso por el proceso de instalación, configuración y protección de MySQL y MariaDB en un servidor Ubuntu. Además, compararemos sus funciones para ayudarte a determinar la mejor opción para tu caso de uso concreto. Con este enfoque paso a paso, estarás preparado para configurar un entorno de base de datos seguro y robusto para tus aplicaciones.
Artículos anteriores:
01. Introducción a Ubuntu Server – SysOSX: AI & Cloud
02. Cómo configurar tu primer servidor Ubuntu: guía para principiantes – SysOSX: AI & Cloud
03. Dominar la línea de comandos de Linux para Ubuntu Server – SysOSX: AI & Cloud
04. Gestión de usuarios y permisos en Ubuntu Server: guía completa – SysOSX: AI & Cloud
05. Conceptos básicos de redes para Ubuntu Server: guía completa – SysOSX: AI & Cloud
06. Instalación y gestión de software en Ubuntu Server: guía completa – SysOSX: AI & Cloud
07.Aplicación de parches y actualización de Ubuntu Server: guía completa – SysOSX: AI & Cloud
08. Protege tu servidor Ubuntu: pasos prácticos para reforzarlo y protegerlo – SysOSX: AI & Cloud
09. Auditoría y registro en el servidor Ubuntu
11. Registro centralizado para el servidor Ubuntu: una guía imprescindible – SysOSX: AI & Cloud
12. Auditoría y cumplimiento para Ubuntu Server: mejores prácticas – SysOSX: AI & Cloud
14. Alojar varios sitios web en un solo servidor Ubuntu: consejos útiles – SysOSX: AI & Cloud
15. Gestión del almacenamiento y los discos en Ubuntu Server: guía sencilla – SysOSX: AI & Cloud
Requisitos previos
Antes de empezar, asegúrate de lo siguiente:
- Ubuntu Server: Una instancia de Ubuntu en ejecución (se recomienda la versión 20.04 o posterior).
- Acceso administrativo: Necesitarás
sudoprivilegios para instalar y configurar el servidor de bases de datos. - Conexión a internet: Necesaria para descargar paquetes y actualizaciones.
MySQL frente a MariaDB: diferencias clave
Aunque MySQL y MariaDB comparten las mismas raíces, en los últimos años han divergido para ofrecer funciones distintas. Esta comparación te ayudará a elegir el servidor de bases de datos adecuado para tus necesidades:
| Característica | MySQL | MariaDB |
|---|---|---|
| Licencia | Licencia dual (GPL y propietaria) | Código abierto (GPL) |
| Rendimiento | Optimizado para cargas de trabajo con muchas lecturas | Mejor rendimiento tanto para cargas de trabajo de lectura como de escritura |
| Motor de almacenamiento predeterminado | InnoDB | Aria (alternativa a InnoDB) |
| Funciones | Funciones empresariales disponibles en las versiones de pago | Muchas funciones (por ejemplo, grupo de hilos, funciones JSON) son de código abierto |
| Compatibilidad | Ampliamente utilizado y compatible con las principales plataformas | Compatible con MySQL, pero es posible que no admita algunas funciones propietarias de MySQL |
| Replicación | Replicación tradicional | Replicación mejorada con compatibilidad con Galera Cluster |
| Apoyo de la comunidad | Gran comunidad y opciones de soporte empresarial | Fuerte apoyo de la comunidad de código abierto |
Recomendación:
- Elige MySQL si necesitas funciones de nivel empresarial y compatibilidad con herramientas propietarias.
- Opta por MariaDB si prefieres software de código abierto con funciones y rendimiento mejorados.
Instalación de MySQL o MariaDB
Paso 1: Actualizar el repositorio de paquetes
Actualiza tu sistema para asegurarte de trabajar con las versiones más recientes de los paquetes:
sudo apt update && sudo apt upgrade
Paso 2: Instalar MySQL o MariaDB
Puedes instalar MySQL o MariaDB según tu preferencia.
Instalación de MySQL:
sudo apt install mysql-server
Instalación de MariaDB:
sudo apt install mariadb-server
Paso 3: Verificar la instalación
Después de la instalación, asegúrate de que el servidor de bases de datos esté en ejecución:
Para MySQL:
sudo systemctl status mysql
Para MariaDB:
sudo systemctl status mariadb
Configuración del servidor de bases de datos
Paso 1: Configuración básica
Edita el archivo de configuración para optimizar el rendimiento y la seguridad.
Para MySQL:
sudo nano /etc/mysql/my.cnf
Para MariaDB:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Configuración clave que debes ajustar:
bind-address: Ajústalo a0.0.0.0si quieres acceso remoto.max_connections: Aumenta este valor para aplicaciones de mucho tráfico.
Después de hacer los cambios, reinicia el servicio:
sudo systemctl restart mysql # For MySQL
sudo systemctl restart mariadb # For MariaDB
Paso 2: Probar el servidor de bases de datos
Inicia sesión en el servidor de bases de datos para asegurarte de que funciona:
mysql -u root -p
Protección de tu servidor de bases de datos
Paso 1: Ejecutar el script de seguridad
Usa el script de seguridad integrado para reforzar tu servidor de bases de datos.
sudo mysql_secure_installation
Sigue las indicaciones para:
- Establecer una contraseña segura para root.
- Eliminar los usuarios anónimos.
- Deshabilitar el inicio de sesión remoto de root.
- Eliminar las bases de datos de prueba.
Paso 2: Configurar las reglas del cortafuegos
Restringe el acceso al servidor de bases de datos con ufw:
sudo ufw allow from <your-ip-address> to any port 3306
Sustituye <your-ip-address> por la dirección IP que requiere acceso.
Paso 3: Habilitar SSL/TLS
Para mayor seguridad, habilita las conexiones SSL/TLS. Consulta documentación de MySQL o documentación de MariaDB para obtener instrucciones de configuración.
(Ejemplo para MySQL)
- Genera los certificados:
sudo mysql_ssl_rsa_setup --uid=mysql
- Habilítalo en la configuración:
[mysqld]
ssl-ca = /var/lib/mysql/ca.pem
ssl-cert = /var/lib/mysql/server-cert.pem
ssl-key = /var/lib/mysql/server-key.pem
Paso 4: Instalar Fail2Ban (opcional)
sudo apt install fail2ban
Configura las reglas de jail para MySQL/MariaDB en /etc/fail2ban/jail.local.
Gestión de tu servidor de bases de datos
Paso 1: Crear una base de datos
Crea una base de datos para tu aplicación:
CREATE DATABASE my_application_db;
Paso 2: Crear un usuario y conceder privilegios
Crea un usuario y asigna privilegios:
CREATE USER 'app_user'@'%' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON my_application_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
Paso 3: Supervisar el rendimiento
# Analyze slow queries
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log
# Use MySQLTuner
wget https://mysqltuner.pl -O mysqltuner.pl
perl mysqltuner.pl
Paso 4: Copia de seguridad y restauración
Las copias de seguridad periódicas son esenciales para la seguridad de los datos.
Copia de seguridad:
mysqldump -u root -p my_application_db > my_application_db.sql
Restauración:
mysql -u root -p my_application_db < my_application_db.sql
Copias de seguridad automatizadas (tarea cron)
# Daily backup at 2 AM
0 2 * * * /usr/bin/mysqldump -u root -p PASSWORD app_db > /backups/app_db_$(date +\%F).sql
Conclusión
Tanto MySQL como MariaDB son excelentes opciones para configurar un servidor de bases de datos en Ubuntu. Aunque MySQL es conocido por sus funciones de nivel empresarial, MariaDB destaca por su enfoque de código abierto y sus mejoras de rendimiento. Si sigues esta guía, podrás instalar, configurar, proteger y gestionar tu servidor de bases de datos de forma eficaz.
Próximamente:
En nuestra próxima guía, «Dominar LVM en Ubuntu: almacenamiento flexible para servidores de bases de datos», aprenderás a:
- Crear y gestionar volúmenes lógicos para el almacenamiento dinámico de bases de datos.
- Cambiar el tamaño de los discos sin tiempo de inactividad.
- Implementar instantáneas para copias de seguridad coherentes.
¡No te lo pierdas: sigue nuestro blog para mantenerte al día!