17. Configuración de un servidor de bases de datos seguro en Ubuntu: MySQL frente a MariaDB

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

10. Herramientas de monitorización del sistema para Ubuntu Server: guía completa – SysOSX: AI & Cloud

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

13. Configuración de tu servidor Ubuntu para alojamiento y aplicaciones web: guía definitiva – 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

16. Configuración de servicios de uso compartido de archivos en Ubuntu Server: guía completa – 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 sudo privilegios 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ísticaMySQLMariaDB
LicenciaLicencia dual (GPL y propietaria)Código abierto (GPL)
RendimientoOptimizado para cargas de trabajo con muchas lecturasMejor rendimiento tanto para cargas de trabajo de lectura como de escritura
Motor de almacenamiento predeterminadoInnoDBAria (alternativa a InnoDB)
FuncionesFunciones empresariales disponibles en las versiones de pagoMuchas funciones (por ejemplo, grupo de hilos, funciones JSON) son de código abierto
CompatibilidadAmpliamente utilizado y compatible con las principales plataformasCompatible con MySQL, pero es posible que no admita algunas funciones propietarias de MySQL
ReplicaciónReplicación tradicionalReplicación mejorada con compatibilidad con Galera Cluster
Apoyo de la comunidadGran comunidad y opciones de soporte empresarialFuerte 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 a 0.0.0.0 si 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)

  1. Genera los certificados:
sudo mysql_ssl_rsa_setup --uid=mysql  
  1. 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!

Deja un comentario