Publicado el 21 de septiembre de 2026 · Revisado el 21 de septiembre de 2026
Cómo instalar y configurar MySQL en tu VPS, paso a paso
MySQL sigue siendo la base de datos más usada del mundo y viene instalada por defecto en millones de stacks de producción. Esta guía cubre la instalación desde cero en un VPS con Ubuntu, la configuración de seguridad mínima obligatoria, la creación de un usuario y base de datos para tu app, y cómo conectarte de forma remota sin dejar el puerto expuesto a todo internet.
MySQL es la base de datos relacional más desplegada del mundo. Está detrás de WordPress, Laravel, Django con adaptador MySQL, y cientos de aplicaciones que asumen que MySQL va a estar ahí. Esta guía asume que tenés un VPS con Ubuntu 22.04 o 24.04 y acceso root o un usuario con sudo.
1. Actualizar los paquetes del sistema
Antes de instalar cualquier cosa, conviene tener el índice de paquetes actualizado para recibir la versión más reciente disponible en los repositorios oficiales de Ubuntu.
sudo apt update && sudo apt upgrade -y
2. Instalar MySQL Server
Ubuntu incluye MySQL en sus repositorios oficiales. La instalación completa — servidor, cliente y dependencias — es un solo comando.
sudo apt install mysql-server -y
Una vez que termina, el servicio arranca automáticamente. Para verificarlo:
sudo systemctl status mysql
Debería aparecer active (running). Si no arrancó solo, lo iniciás con sudo systemctl start mysql, y para que inicie automáticamente con el servidor:
sudo systemctl enable mysql
3. Ejecutar el asistente de seguridad
MySQL viene con una herramienta que recorre los ajustes de seguridad más importantes: deshabilitar el usuario anónimo, bloquear el acceso root desde fuera de localhost, eliminar la base de datos de prueba que cualquier usuario puede ver por defecto, y establecer la política de contraseñas. Es obligatorio correrla antes de poner el servidor en producción.
sudo mysql_secure_installation
El asistente pregunta por el plugin de validación de contraseñas — podés elegir el nivel MEDIUM (mínimo 8 caracteres con mayúsculas, números y símbolos) para producción. Para el resto de las preguntas (Remove anonymous users?, Disallow root login remotely?, Remove test database?, Reload privilege tables?) respondé Y a todo.
4. Verificar el acceso como root
En Ubuntu, el usuario root de MySQL usa autenticación por socket de sistema (auth_socket) por defecto — eso significa que solo podés entrar como root de MySQL si antes sos root del sistema operativo. Para verificarlo:
sudo mysql
Deberías ver el prompt mysql>. Eso confirma que funciona. Salís con exit.
5. Crear una base de datos y un usuario para tu aplicación
Nunca conectes tu aplicación a MySQL como root. La práctica correcta es crear un usuario con permisos restringidos únicamente a la base de datos que necesita. Así, si la app se ve comprometida, el atacante no tiene acceso al resto de bases de datos del servidor.
Adentro del prompt de MySQL (sudo mysql):
-- Crear la base de datos
CREATE DATABASE nombre_bd CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Crear el usuario (reemplazá 'nombre_usuario' y 'contraseña_segura')
CREATE USER 'nombre_usuario'@'localhost' IDENTIFIED BY 'contraseña_segura';
-- Darle permisos solo sobre esa base de datos
GRANT ALL PRIVILEGES ON nombre_bd.* TO 'nombre_usuario'@'localhost';
-- Aplicar los cambios
FLUSH PRIVILEGES;
El CHARACTER SET utf8mb4 es importante — soporta emojis y caracteres especiales que el utf8 clásico de MySQL no maneja bien.
Para verificar que el usuario quedó bien creado:
SHOW GRANTS FOR 'nombre_usuario'@'localhost';
6. Acceso remoto seguro
Por defecto MySQL solo acepta conexiones desde localhost (bind-address = 127.0.0.1), lo que es lo correcto. Si tu app corre en el mismo servidor que la base de datos, no necesitás cambiar nada.
Si la app corre en otro servidor y necesitás conexión remota, la opción más segura no es abrir el puerto 3306 a internet — es usar un túnel SSH. Desde la máquina de tu app:
ssh -L 3306:127.0.0.1:3306 usuario@ip_del_servidor_mysql -N
Eso mapea el puerto 3306 de tu máquina local al 3306 del servidor de base de datos a través de SSH cifrado. Tu app se conecta a 127.0.0.1:3306 como si MySQL estuviera local, pero el tráfico viaja cifrado por SSH.
Si preferís abrir el acceso directo (por ejemplo, para un servidor de base de datos dedicado en red privada), editá /etc/mysql/mysql.conf.d/mysqld.cnf:
bind-address = 0.0.0.0
Y creá el usuario con acceso desde la IP específica, no desde % (cualquier IP):
CREATE USER 'nombre_usuario'@'IP_DEL_SERVIDOR_APP' IDENTIFIED BY 'contraseña_segura';
GRANT ALL PRIVILEGES ON nombre_bd.* TO 'nombre_usuario'@'IP_DEL_SERVIDOR_APP';
FLUSH PRIVILEGES;
Reiniciá el servicio después del cambio en el config:
sudo systemctl restart mysql
Y asegurate de que el firewall solo permita el puerto 3306 desde esa IP específica:
sudo ufw allow from IP_DEL_SERVIDOR_APP to any port 3306
7. Probar la conexión con el nuevo usuario
Para confirmar que todo funciona antes de conectar la app:
mysql -u nombre_usuario -p nombre_bd
Pedirá la contraseña. Si entrás y ves el prompt de MySQL, la configuración está lista.
Si todavía no tenés el VPS donde instalar esto, podés ver las opciones disponibles en los planes de VPS de NAP Latino — incluyen acceso root completo y Ubuntu preinstalado.
Artículos relacionados
31 de ago de 2026
Qué hacer cuando cPanel no carga o se "cae": diagnóstico paso a paso antes de llamar a soporte
24 de ago de 2026
Qué es Hermes y cómo instalar tu propio agente de IA que ejecuta comandos reales en tu servidor, sin pagar por token
17 de ago de 2026
Cómo activar la autenticación de dos factores (2FA) en tu cuenta de cPanel
Carolina
CTO - NAP Latino
www.naplatino.com
soporte@naplatino.com
