🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo importar una base de datos grande en DirectAdmin (por SSH)

Actualizado el 7 de abril de 2026

¿Por qué falla la importación de una base de datos grande en DirectAdmin?

Cuando intentas importar un archivo SQL de más de 50 MB o 100 MB desde el administrador de archivos o desde phpMyAdmin, es muy probable que la operación se interrumpa. Esto ocurre por dos razones principales: el límite de tiempo de ejecución de PHP y el límite de tamaño de archivo de subida que trae configurado el servidor por defecto. El navegador también puede agotar la memoria o cerrar la conexión si la importación tarda demasiado.

Pero no te preocupes: la solución profesional y definitiva es usar SSH (Secure Shell). Con SSH puedes importar un archivo SQL de cualquier tamaño, incluso de varios gigabytes, sin cortes, sin límites de tiempo y con un control total del proceso. En este artículo te enseñaré paso a paso cómo hacerlo, pensado para que lo entiendas aunque nunca hayas usado la terminal.


¿Qué necesito antes de empezar?

Antes de lanzarte a ejecutar comandos, asegúrate de tener tres cosas listas:

  1. Acceso SSH a tu servidor: Debe estar habilitado en tu panel de DirectAdmin. Si no sabes si lo tienes, revisa la sección "SSH Access" dentro de tu cuenta. Si no aparece, tendrás que solicitarlo a tu proveedor de hosting.

  2. Un cliente SSH: Si usas Windows, te recomiendo PuTTY (es gratuito). En Mac o Linux, puedes usar la propia terminal del sistema.

  3. El archivo SQL en tu ordenador: Ten localizado el archivo .sql o .sql.gz que quieres importar. Anota su ruta exacta, por ejemplo: C:\Users\TuUsuario\Descargas\basededatos.sql.

  4. Los datos de tu base de datos: Necesitarás el nombre de la base de datos, el usuario y la contraseña. Los encuentras en DirectAdmin, en la sección "MySQL Management".

Una vez que tengas esto, estás listo para conectarte.


Paso 1: Conectarse al servidor por SSH

Abre tu cliente SSH (PuTTY, Terminal, etc.) y conéctate con los siguientes datos:

  • Host: El dominio o la IP de tu servidor (ej: midominio.com o 192.168.1.1).
  • Puerto: Normalmente es el 22 (aunque algunos proveedores usan puertos personalizados; verifica tu correo de bienvenida).
  • Usuario: Tu usuario principal de DirectAdmin (el mismo que usas para entrar al panel).
  • Contraseña: La contraseña de tu cuenta de hosting.

En Windows con PuTTY, simplemente escribe el host y el puerto, haz clic en "Open" y luego te pedirá usuario y contraseña. En Mac o Linux, abre la terminal y escribe:

ssh usuario@midominio.com -p 22

Te pedirá la contraseña y, si es la primera vez, te preguntará si confías en el servidor. Responde yes y pulsa Enter.

[INFO] Si al conectarte ves un mensaje de "Permission denied", revisa que el usuario y la contraseña sean correctos. Asegúrate de que el acceso SSH esté activado en DirectAdmin.


Paso 2: Subir el archivo SQL al servidor

Una vez conectado, necesitas subir tu archivo .sql desde tu ordenador al servidor. Para ello, usa el comando scp (secure copy) desde otra ventana de terminal (no desde la sesión SSH ya abierta). Es más fácil si abres una segunda terminal en tu equipo local.

El comando es el siguiente:

scp -P 22 C:\Users\TuUsuario\Descargas\basededatos.sql usuario@midominio.com:/home/usuario/

Desglosemos el comando:

  • -P 22 indica el puerto SSH.
  • La ruta local del archivo.
  • usuario@midominio.com es tu usuario y servidor.
  • :/home/usuario/ es la ruta de destino en el servidor. Normalmente, la carpeta principal de tu cuenta está en /home/tuusuario/.

Si tu archivo es muy grande (más de 1 GB), te recomiendo comprimirlo en .gz antes de subirlo. En Windows puedes usar 7-Zip, y en Mac/Linux el comando gzip archivo.sql. Esto reduce el tiempo de subida considerablemente.

[TIP] Si no te apetece usar scp, también puedes subir el archivo comprimido por el Administrador de Archivos de DirectAdmin (límite de 2 GB en algunos servidores) y luego descomprimirlo por SSH con gunzip archivo.sql.gz. Pero si el archivo es enorme, scp es más fiable.


Paso 3: Localizar la base de datos y el usuario en DirectAdmin

Antes de importar, necesitas saber exactamente el nombre de la base de datos y el usuario. En DirectAdmin, ve a la sección "MySQL Management" y localiza:

  • El nombre de la base de datos (suele ser algo como usuario_basededatos).
  • El usuario de la base de datos (normalmente usuario_bduser).
  • La contraseña de ese usuario.

También necesitarás saber el host de la base de datos, que normalmente es localhost.

[INFO] Si aún no has creado la base de datos, créala primero desde DirectAdmin. Necesitarás tenerla creada y con su usuario asignado antes de importar.


Paso 4: Importar la base de datos con el comando mysql

Ahora viene la parte clave. Una vez que el archivo esté subido al servidor y tengas los datos de tu base, ejecuta el siguiente comando desde la sesión SSH:

mysql -u usuario_bduser -p nombre_basededatos < /home/usuario/archivo.sql

Te pedirá la contraseña del usuario de la base de datos. Escríbela y pulsa Enter. Verás que el cursor se queda parado unos segundos o minutos (dependiendo del tamaño) y luego vuelve al prompt. Si no hay ningún mensaje de error, la importación fue exitosa.

Si el archivo está comprimido (.sql.gz)

Si subiste el archivo comprimido, primero descomprímelo y luego impórtalo. Puedes hacerlo en un solo paso con el comando gunzip:

gunzip /home/usuario/archivo.sql.gz

Esto te generará el archivo .sql descomprimido. Después ejecuta la importación normal.

Otra opción es importar directamente desde el archivo comprimido sin descomprimir, usando zcat:

zcat /home/usuario/archivo.sql.gz | mysql -u usuario_bduser -p nombre_basededatos

Este comando descomprime y envía el contenido a mysql en tiempo real, ahorrando espacio en disco.

[TIP] Si tu archivo es enorme (más de 2 GB), divide la importación en partes. Puedes usar head o sed para extraer los primeros registros, pero esto ya es más avanzado. Para la mayoría de los casos, el comando simple funciona perfectamente.


Paso 5: Verificar que la importación fue exitosa

Después de importar, es buena práctica verificar que todo está en orden. Entra en phpMyAdmin desde DirectAdmin o ejecuta un comando rápido por SSH:

mysql -u usuario_bduser -p -e "SHOW TABLES FROM nombre_basededatos;"

Esto te mostrará una lista de las tablas importadas. Si ves las tablas que esperabas, ¡enhorabuena! La importación fue un éxito.

También puedes comprobar el número de registros de una tabla específica:

mysql -u usuario_bduser -p -e "SELECT COUNT(*) FROM nombre_basededatos.tabla_ejemplo;"

Sustituye tabla_ejemplo por el nombre real de una tabla que sepas que tiene datos.


Errores comunes y cómo solucionarlos

Aunque el proceso es sencillo, pueden aparecer algunos errores típicos. Aquí te dejo los más habituales y su solución:

Error: "Access denied for user"

Este error indica que el usuario o la contraseña son incorrectos, o que el usuario no tiene permisos sobre esa base de datos. Revisa en DirectAdmin que el usuario esté asignado a esa base de datos y que la contraseña sea la correcta.

Error: "Table already exists"

Si estás importando una base de datos que ya existe y tiene tablas, mysql te dará este error. La solución es eliminar las tablas existentes antes de importar. Puedes hacerlo desde phpMyAdmin o ejecutar:

mysql -u usuario_bduser -p -e "DROP DATABASE nombre_basededatos; CREATE DATABASE nombre_basededatos;"

Luego vuelve a importar. Ten cuidado: esto borrará todos los datos existentes.

Error: "Out of memory" o "MySQL server has gone away"

Si el archivo es muy grande, puede que el servidor MySQL tenga un límite de tamaño de paquete. Puedes aumentarlo temporalmente ejecutando esto antes de importar:

mysql -u usuario_bduser -p --max_allowed_packet=1G nombre_basededatos < archivo.sql

Esto le dice a MySQL que acepte paquetes de hasta 1 GB.

[WARNING] No ejecutes este comando con un límite demasiado alto si tu servidor tiene poca memoria RAM. 1G es suficiente para la mayoría de los casos.


Alternativa: importar con pv para ver el progreso

Cuando importas un archivo de varios gigabytes, puede ser frustrante no saber cuánto falta. Puedes usar el comando pv (pipe viewer) para ver una barra de progreso. Primero instálalo si no lo tienes:

apt install pv

Luego ejecuta:

pv /home/usuario/archivo.sql | mysql -u usuario_bduser -p nombre_basededatos

Verás el porcentaje, el tiempo transcurrido y el tiempo restante estimado. Es muy útil para archivos grandes.


Consejos finales para importar bases de datos gigantes

  • Realiza una copia de seguridad: Antes de importar, siempre es buena idea tener una copia de la base de datos actual por si algo sale mal.
  • Ejecuta la importación en segundo plano: Si el archivo es enorme, puedes usar nohup para que la importación siga aunque cierres la sesión SSH:
nohup mysql -u usuario_bduser -p nombre_basededatos < archivo.sql > importacion.log 2>&1 &

Esto ejecutará la importación en segundo plano y guardará el resultado en importacion.log. Puedes revisar el log con cat importacion.log.

  • Optimiza el servidor: Si importas bases de datos muy grandes a menudo, considera aumentar la memoria de MySQL o usar un servidor con más recursos.

  • Usa archivos comprimidos: Subir un .sql.gz es mucho más rápido que subir un .sql plano. Ahorra ancho de banda y tiempo de subida.


Preguntas frecuentes (FAQ)

¿Puedo importar una base de datos con SSH si mi hosting usa Syspanel?

Si tu hosting usa Syspanel (antes conocido como HestiaCP), el proceso es prácticamente el mismo. Solo cambia la forma de acceder al panel: en lugar de DirectAdmin, usarás Syspanel a través del puerto 2106 (por ejemplo, https://midominio.com:2106). El acceso SSH y los comandos de MySQL son idénticos. La estructura de carpetas puede variar ligeramente, pero la importación con mysql funciona igual.

¿Qué hago si no tengo acceso SSH?

Si tu plan de hosting no incluye SSH, tendrás que pedirlo al soporte técnico o plantearte cambiar a un plan que lo incluya. Sin SSH, la única opción es usar phpMyAdmin, pero fallará con archivos grandes. Algunos proveedores ofrecen la opción de importar por FTP y luego ejecutar un script PHP, pero es más complicado y menos fiable.

¿Cuánto tarda en importar una base de datos de 1 GB por SSH?

Depende de la velocidad del servidor y de la complejidad de la base de datos. En un servidor medio, una base de datos de 1 GB puede tardar entre 5 y 20 minutos. Con el comando pv puedes ver el progreso y saber exactamente cuánto falta.

¿Puedo importar una base de datos desde otro servidor directamente?

Sí, puedes usar mysqldump para exportar desde el servidor origen y luego importar en el destino, todo a través de SSH. Esta técnica es avanzada, pero muy útil para migraciones. El comando sería algo así:

mysqldump -u origen_user -p nombre_bd | ssh usuario@destino.com "mysql -u destino_user -p nombre_bd"

Conclusión

Importar una base de datos grande en DirectAdmin por SSH es la solución más fiable, rápida y profesional. Aunque al principio la terminal puede parecer intimidante, siguiendo estos pasos verás que es mucho más sencillo de lo que parece. Ya no tendrás que lidiar con los límites de phpMyAdmin ni con las caídas del navegador.

La próxima vez que necesites importar un archivo SQL de gran tamaño, ya sabes: conéctate por SSH, sube tu archivo, ejecuta el comando mysql y verifica el resultado. En menos de lo que crees, tu base de datos estará funcionando perfectamente.

[TIP] Guarda estos comandos en un archivo de notas. Te servirán no solo para importar, sino también para exportar bases de datos o hacer copias de seguridad rápidas. Dominar SSH te abrirá muchas puertas en la gestión de tu hosting.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel