UA-51298262-10 Skip to main content
cPanel

Restaurar base de datos MySQL desde archivo .sql por SSH

By septiembre 26, 2026No Comments
Restaurar base de datos MySQL desde archivo .sql por SSH

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.

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.

  1. Conéctate por SSH: ssh rsadmin@servidor.com
  2. Ve a la carpeta del archivo: cd /home/rsadmin
  3. Lanza la importación: mysql -u rsadmin_wp -p rsadmin_web < backup.sql
  4. 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:

  1. 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.
  2. Revisa el número de registros: lanza un SELECT COUNT(*) en las tablas críticas y compara con el sitio original.
  3. 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.
  4. 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.