
Restaurar una base de datos MySQL desde un archivo .sql por SSH es lo más rápido y fiable cuando toca recuperar o migrar datos. Sobre todo si el archivo pasa de los límites de importación de phpMyAdmin (y pasa, casi siempre). Aquí vas a encontrar los requisitos previos, el comando exacto y ejemplos reales paso a paso. Y si prefieres no tocar nada, en RedServicio (redservicio.net) lo hacemos por ti: soporte profesional para incidencias con bases de datos y servidores.
Índice
- 1 Requisitos previos: acceso SSH y datos de conexión a la base de datos
- 2 Comando mysql para restaurar base de datos MySQL desde un archivo .sql
- 3 Cómo importar la base de datos paso a paso con ejemplos reales
- 4 Errores comunes al restaurar una base de datos por SSH y cómo solucionarlos
- 5 Cómo verificar que la restauración se completó correctamente
- 6 Conclusión: restaurar tu base de datos MySQL de forma segura
Requisitos previos: acceso SSH y datos de conexión a la base de datos
Antes de empezar, necesitas cuatro cosas:
- Acceso SSH al servidor: un cliente como Terminal (Linux/macOS), PuTTY o Windows Terminal, y que el hosting permita conexiones SSH (la mayoría de hostings con cPanel, Plesk o VPS lo permiten).
- Datos de conexión MySQL: nombre de la base, usuario y contraseña. Si trabajas con WordPress, están en el wp-config.php. Si no, mira en el panel de tu hosting.
- El archivo .sql ya subido al servidor: súbelo por SFTP a una ruta que conozcas, por ejemplo /home/usuario/backup.sql. ¿Viene comprimido (.sql.gz)? Puedes descomprimirlo o usar el comando que veremos más abajo, directamente sobre el .gz.
- Permisos suficientes: el usuario MySQL debe tener permisos sobre la base de destino. Al menos SELECT, INSERT, CREATE y DROP.
Conéctate así:
- ssh usuario@tudominio.com
Ya dentro, comprueba que MySQL responde con mysql –version. Si el comando no existe, puede que el binario esté en otra ruta. Pasa a veces, sobre todo en Plesk o en servidores con Docker.
Comando mysql para restaurar base de datos MySQL desde un archivo .sql
El comando principal es muy sencillo. Esta es la sintaxis general:
- mysql -u USUARIO -p NOMBRE_BASE_DE_DATOS < archivo.sql
Vamos pieza por pieza:
- -u USUARIO: el usuario de MySQL con permisos sobre esa base de datos.
- -p: indica que la contraseña se pedirá de forma segura al ejecutar. No la escribas nunca directamente en el comando; quedaría en el historial de la shell, y eso es un problema.
- NOMBRE_BASE_DE_DATOS: la base de destino. Debe existir antes (créala desde phpMyAdmin o con CREATE DATABASE).
- < archivo.sql: el operador de redirección. Le dice a MySQL que lea el archivo y ejecute su contenido.
¿El archivo viene comprimido en .gz? Puedes importarlo sin descomprimirlo:
- gunzip < backup.sql.gz | mysql -u USUARIO -p NOMBRE_BASE_DE_DATOS
Cómo importar la base de datos paso a paso con ejemplos reales
Caso práctico completo. Supongamos estos datos: usuario rsadmin_wp, base de datos rsadmin_web y el archivo backup.sql en la carpeta personal.
- Conéctate por SSH: ssh rsadmin@servidor.com
- Ve a la carpeta del archivo: cd /home/rsadmin
- Lanza la importación: mysql -u rsadmin_wp -p rsadmin_web < backup.sql
- Escribe la contraseña cuando la pida. Puede tardar desde unos segundos hasta varios minutos, según el tamaño del archivo.
Un detalle que despista a mucha gente: si el comando termina sin mostrar nada, ha ido bien. MySQL no confirma las operaciones exitosas. Para comprobarlo, entra al monitor:
- mysql -u rsadmin_wp -p rsadmin_web
- SHOW TABLES;
Consejo: ¿te sale «Access denied»? Revisa que el usuario tenga permisos sobre esa base concreta. ¿»Unknown database»? Crea primero la base con CREATE DATABASE rsadmin_web;
Con bases muy grandes puedes añadir la opción -f para continuar ante errores menores, o revisar el archivo error.log si la importación se detiene a medias. Y si te atascaste en algún paso (nos ha pasado a todos), el equipo de RedServicio se encarga de la restauración completa de forma segura.
Errores comunes al restaurar una base de datos por SSH y cómo solucionarlos
Por mucho cuidado que pongas, algo puede fallar durante la importación. Es normal. Estos son los errores que más veces me he encontrado y cómo se resuelven cada uno:
ERROR 1044: Access denied for user
El usuario con el que conectas no tiene permisos suficientes sobre la base. Revisa que usas las credenciales correctas y que ese usuario tiene privilegios ALL sobre la base destino. En hosting compartido hay una trampa clásica: si el archivo .sql incluye las sentencias CREATE DATABASE o USE y tu plan no permite crear bases nuevas, la importación casca nada más empezar. La solución es filtrarlas antes de importar:
grep -v -e «CREATE DATABASE» -e «USE » backup.sql | mysql -u rsadmin -p rsadmin_web
ERROR 2006: MySQL server has gone away
Este aparece casi siempre con archivos .sql enormes que se pasan del límite de max_allowed_packet. ¿Qué hacer? Si tienes acceso a la configuración del servidor, sube el límite; si no, importa por lotes. En un servidor propio, edita my.cnf, establece max_allowed_packet=512M, reinicia MySQL y reintenta. Suele bastar.
ERROR 1064: You have an error in your SQL syntax
Aquí el archivo suele estar corrupto, truncado o exportado con una codificación incorrecta. Mira que termina con una sentencia completa (si la última tabla queda cortada a media línea, ahí está el problema) y comprueba las versiones de MySQL de origen y destino. Este detalle se olvida mucho: exportar desde MySQL 8 hacia un 5.7 genera incompatibilidades con cotejos como utf8mb4_0900_ai_ci.
Timeout del proceso SSH
La conexión SSH se corta a mitad de importación. El proceso muere. Y la base queda a medias, que es quizá el peor escenario posible. Con archivos grandes, usa screen o nohup para que la importación sobreviva aunque tú te desconectes:
nohup mysql -u rsadmin -p rsadmin_web < backup.sql &
Cómo verificar que la restauración se completó correctamente
No des por buena la restauración sin comprobarla. En serio. Aunque el comando termine sin quejarse, conviene revisar lo siguiente:
- Comprueba el número de tablas: ejecuta SHOW TABLES; dentro de la base de datos y compara con el archivo .sql original. Un truco rápido: cuenta las ocurrencias de CREATE TABLE en el backup con grep -c «CREATE TABLE» backup.sql.
- Revisa el número de registros: lanza un SELECT COUNT(*) en las tablas críticas y compara con el sitio original.
- Verifica el cotejo: con SHOW TABLE STATUS; confirma que las tablas usan utf8mb4 y que acentos y caracteres especiales se muestran bien. Las tildes rotas son la señal típica de que algo no encaja.
- Prueba la aplicación: en WordPress, revisa que wp-config.php apunta a la base restaurada y que la web carga sin errores de conexión ni contenido que falte.
Si todo coincide, la restauración se completó con éxito. Guarda una copia del registro de la importación; si algún día tienes que auditar qué pasó, lo agradecerás.
Conclusión: restaurar tu base de datos MySQL de forma segura
Restaurar una base de datos MySQL por SSH es la forma más rápida y fiable de recuperar un sitio web, sobre todo con archivos .sql grandes que las herramientas web habituales no pueden procesar. El proceso, resumido, tiene tres fases: crear o vaciar la base destino, importar el archivo con el comando mysql y verificar el resultado tabla por tabla.
¿Qué necesitas para que todo salga bien? Credenciales correctas con permisos suficientes, compatibilidad de versiones de MySQL entre origen y destino, nohup o screen cuando el archivo sea muy grande (así evitas cortes), y la disciplina de no dar por terminada la restauración sin haber contado tablas y registros.
Y si la línea de comandos no va contigo o prefieres asegurar el resultado, en RedServicio (redservicio.net) ofrecemos asistencia profesional para restaurar bases de datos MySQL de forma segura, reducir el tiempo de caída al mínimo y dejar tu web funcionando como debe.

