Para instalar MySQL en un VPS Linux ejecuta sudo apt install mysql-server (Ubuntu/Debian) o sudo dnf install mysql-server (AlmaLinux/Rocky), y luego asegura la instalación con mysql_secure_installation. En menos de 30 minutos tendrás una base de datos lista para producción.
Esta guía cubre todo el proceso: desde cero hasta una instancia segura con usuarios, permisos y firewall correctamente configurados. Sigue los pasos en orden y no te saltes la sección de seguridad.
Paso 1 — Instalar MySQL en tu VPS
El paquete disponible depende de tu distribución. Las más comunes en VPS son Ubuntu/Debian y AlmaLinux/Rocky Linux.
Ubuntu y Debian
sudo apt update
sudo apt install mysql-server -y
AlmaLinux, Rocky Linux y CentOS Stream
sudo dnf install mysql-server -y
sudo systemctl enable --now mysqld
En Ubuntu, el servicio arranca automáticamente. Verifica el estado:
sudo systemctl status mysql
Deberías ver active (running). Si no, inicia el servicio con sudo systemctl start mysql.
Paso 2 — Asegurar la instalación con mysql_secure_installation
Este script interactivo elimina configuraciones inseguras por defecto. Ejecútalo inmediatamente después de instalar:
sudo mysql_secure_installation
El asistente te preguntará lo siguiente. Estas son las respuestas recomendadas:
- VALIDATE PASSWORD component — Actívalo (
Y) para exigir contraseñas fuertes. - Password strength level — Elige
2(STRONG) en producción. - Remove anonymous users —
Y. Los usuarios anónimos son una brecha de seguridad. - Disallow root login remotely —
Y. Root nunca debe conectarse desde fuera del servidor. - Remove test database —
Y. La base de datostestno tiene utilidad en producción. - Reload privilege tables —
Y. Aplica los cambios de inmediato.
Paso 3 — Crear una base de datos y un usuario dedicado
Nunca uses el usuario root para conectar tu aplicación. Crea un usuario con permisos mínimos para la base de datos de tu proyecto.
Conéctate a MySQL:
sudo mysql
Luego ejecuta estos comandos, sustituyendo los valores en mayúsculas:
CREATE DATABASE mi_app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mi_usuario'@'localhost' IDENTIFIED BY 'ContraseñaSegura123!';
GRANT ALL PRIVILEGES ON mi_app.* TO 'mi_usuario'@'localhost';
FLUSH PRIVILEGES;
EXIT;
El juego de caracteres utf8mb4 es obligatorio si necesitas soportar emojis o caracteres especiales — y en aplicaciones modernas siempre los necesitas.
Paso 4 — Configurar el firewall
MySQL escucha en el puerto 3306. Por defecto, este puerto no debe estar abierto a internet. Si tu aplicación corre en el mismo servidor que la base de datos, no abras el puerto:
# Verificar que el puerto NO esté accesible externamente
sudo ss -tlnp | grep 3306
Si necesitas conexiones remotas (por ejemplo, desde otro servidor de aplicaciones), abre el puerto solo para esa IP:
# Con UFW (Ubuntu/Debian)
sudo ufw allow from 192.168.1.100 to any port 3306
# Con firewalld (AlmaLinux/Rocky)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --reload
Sustituye 192.168.1.100 por la IP real de tu servidor de aplicaciones. Si quisieras abrir a todo internet estarías expuesto a ataques de fuerza bruta — no lo hagas.
Paso 5 — Ajustes de rendimiento básicos
El archivo de configuración principal es /etc/mysql/mysql.conf.d/mysqld.cnf (Ubuntu) o /etc/my.cnf (RHEL). Estos son los parámetros más importantes para un VPS con 2-4 GB de RAM:
| Parámetro | Valor recomendado | Descripción |
|---|---|---|
innodb_buffer_pool_size |
70 % de la RAM | Caché principal de InnoDB. El parámetro más importante. |
max_connections |
100–150 | Limita conexiones simultáneas; evita agotamiento de memoria. |
query_cache_size |
0 | Desactívalo en MySQL 5.7+. Causa contención en escrituras. |
slow_query_log |
ON | Registra consultas lentas para optimizarlas después. |
Después de editar el archivo, reinicia el servicio:
sudo systemctl restart mysql
Para saber cuánta RAM tiene tu VPS: free -h. Asigna el 70 % al innodb_buffer_pool_size. En un VPS de 2 GB, eso es aproximadamente 1400M.
Si tu agencia o proyecto necesita un VPS optimizado para bases de datos de alto rendimiento, el equipo de elenlace.com puede ayudarte a elegir el plan y la configuración correctos desde el inicio.
También puedes explorar más guías sobre infraestructura en nuestra sección de servidores VPS.
Conclusiones clave
- Instala MySQL con el gestor de paquetes de tu distribución y verifica que el servicio esté activo.
- Ejecuta
mysql_secure_installationinmediatamente después de instalar — nunca lo omitas. - Crea un usuario dedicado por aplicación con permisos mínimos; jamás uses
rooten tu código. - Mantén el puerto 3306 cerrado a internet salvo que necesites acceso remoto controlado por IP.
- Ajusta
innodb_buffer_pool_sizeal 70 % de la RAM disponible para el mejor rendimiento.
Con estos cinco pasos tienes una instalación de MySQL lista para producción. Si buscas soporte especializado en configuración de servidores, visita elenlace.com y habla con nuestro equipo.
Preguntas frecuentes
¿Puedo usar MariaDB en lugar de MySQL en mi VPS?
Sí. MariaDB es un fork compatible de MySQL y es la opción por defecto en muchas distribuciones RHEL. Los comandos de instalación y configuración son prácticamente idénticos; solo cambia el nombre del paquete y del servicio (mariadb-server / mariadb).
¿Cómo conecto mi aplicación PHP a MySQL?
Usa la extensión PDO con el driver MySQL: new PDO('mysql:host=localhost;dbname=mi_app;charset=utf8mb4', 'mi_usuario', 'contraseña'). Usa siempre prepared statements para evitar inyección SQL.
¿Qué hago si olvidé la contraseña de root de MySQL?
Detén el servicio, inícialo con --skip-grant-tables, conéctate sin contraseña, cambia la contraseña con ALTER USER y reinicia el servicio normalmente. El proceso exacto varía ligeramente entre MySQL 5.7 y 8.0.
¿Es seguro abrir el puerto 3306 al público?
No. Exposer MySQL directamente a internet lo convierte en un objetivo inmediato de ataques de fuerza bruta y exploits conocidos. Si necesitas acceso remoto, usa un túnel SSH (ssh -L 3306:localhost:3306 usuario@tu-servidor) o una VPN, y restringe el puerto por IP en el firewall.
Compara proveedores
Otros proveedores y guías que vale la pena comparar: