Cómo importar una base de datos MySQL grande por consola
Para importar una base grande, subí el volcado al servidor con scp o SFTP y cargalo por consola con mysql -u usuario -p base < archivo.sql, o con gunzip < archivo.sql.gz | mysql -u usuario -p base si está comprimido. Por consola no rigen los límites de subida y de tiempo que cortan a phpMyAdmin. Creá antes la base y el usuario, importá con --default-character-set=utf8mb4 y, si falla con "MySQL server has gone away", subí max_allowed_packet. Si tu hosting no tiene acceso por consola, escribinos por ticket.
Por qué phpMyAdmin corta con archivos grandes
phpMyAdmin recibe el archivo por el navegador y lo procesa con PHP, así que lo frenan dos límites del servidor. El primero es el tamaño máximo de subida, que fijan upload_max_filesize y post_max_size, y que aparece al lado del botón para elegir el archivo. El segundo es el tiempo máximo de ejecución, y es el más traicionero: la importación arranca, corre un rato y se corta a la mitad, con la base cargada en parte.
Por consola no hay ninguno de los dos: el cliente mysql lee el archivo directo del disco del servidor y tarda lo que tenga que tardar.
Subí el archivo al servidor
Desde la terminal de tu computadora (PowerShell en Windows 10 y 11, o la de macOS y Linux), scp copia el archivo por SSH:
scp tienda.sql.gz root@203.0.113.24:/root/- Si cambiaste el puerto de SSH, en
scpse indica con-P, en mayúscula:scp -P 2222 tienda.sql.gz root@203.0.113.24:/root/. - Si preferís algo gráfico, FileZilla o WinSCP hacen lo mismo por SFTP, con el mismo usuario y la misma clave de SSH. No uses FTP sin cifrar.
- Si el volcado no está comprimido, comprimilo antes con
gzip tienda.sql. Es texto, así que queda mucho más chico y se sube más rápido.
Creá la base y el usuario antes
El volcado trae las tablas y los datos, pero normalmente no la base ni el usuario. Entrá como root con mysql (o con mysql -u root -p, si tu root usa clave) y crealos:
CREATE DATABASE tienda CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'juan'@'localhost' IDENTIFIED BY 'una-clave-larga';
GRANT ALL PRIVILEGES ON tienda.* TO 'juan'@'localhost';- En un servidor con DirectAdmin, la base y el usuario se crean desde el panel, en la sección de MySQL. El nombre queda con tu usuario adelante, como
juan_tienda.
Importá por consola
Con la base creada y el archivo en el servidor, desde una sesión de SSH:
mysql -u juan -p --default-character-set=utf8mb4 tienda < tienda.sql- Te pide la clave de
juany empieza. Mientras importa no muestra nada; si termina sin errores, vuelve al prompt sin ningún mensaje. - Ojo con el espacio: en
-p tienda, el-ppide la clave ytiendaes la base. Pegado,-ptienda, tomaríatiendacomo clave. - Si lo subiste comprimido, no hace falta descomprimirlo:
gunzip < tienda.sql.gz | mysql -u juan -p --default-character-set=utf8mb4 tiendalo descomprime al vuelo, sin ocupar lugar extra en el disco.zcat tienda.sql.gzen lugar degunzip < tienda.sql.gzhace lo mismo. --default-character-set=utf8mb4evita que las eñes y los acentos queden rotos si el archivo no declara su juego de caracteres.- Para ver el avance,
pvmuestra una barra con el tiempo estimado:pv tienda.sql.gz | gunzip | mysql -u juan -p --default-character-set=utf8mb4 tienda. Se instala conapt install pv; en AlmaLinux está en EPEL, así que primero vadnf install epel-releasey despuésdnf install pv. Si la barra tapa el pedido de clave, escribila igual y apretá Enter.
Si la importación falla
| Mensaje | Por qué pasa | Qué hacer |
|---|---|---|
MySQL server has gone away (en MariaDB, Server has gone away), error 2006 | Una sentencia del archivo supera max_allowed_packet, el tamaño máximo que acepta el motor. | Como root, en mysql: SET GLOBAL max_allowed_packet = 268435456; (256 MB, vale hasta que reinicies el motor). Después importá de nuevo agregando --max-allowed-packet=256M al comando. |
Unknown database, error 1049 | La base no existe. | Creala antes, como en el paso anterior. |
Access denied for user, errores 1044 y 1045 | Con 1045, el usuario o la clave no coinciden. Con 1044, el usuario no tiene permisos sobre esa base. | Revisá la clave y el GRANT sobre la base. |
Unknown collation: 'utf8mb4_0900_ai_ci', error 1273 | El volcado viene de MySQL 8 y tu MariaDB no conoce esa intercalación. | Reemplazala en el archivo descomprimido: sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' tienda.sql. |
Eñes y acentos como ñ o é | El archivo se leyó con otro juego de caracteres. | Importá de nuevo con --default-character-set=utf8mb4. |
La importación se frena en el primer error y lo anterior queda cargado. Los volcados de mysqldump borran y recrean cada tabla, así que, corregida la causa, podés importar el archivo entero otra vez.
Si tu hosting no tiene acceso por consola
Sin SSH no hay forma de correr mysql en el servidor, y phpMyAdmin tiene los límites de arriba. Escribinos por ticket con el tamaño del archivo y te indicamos cómo hacerlo en tu plan.
Preguntas frecuentes
¿Cómo exporto la base desde el servidor viejo?
Con mysqldump, comprimiendo al vuelo: mysqldump --single-transaction --routines -u juan -p tienda | gzip > tienda.sql.gz. --single-transaction saca una copia coherente sin bloquear las tablas InnoDB, y --routines suma los procedimientos almacenados. Si venís de otro proveedor, la migración es sin cargo: escribinos por ticket.
¿Qué pasa si se corta la conexión en medio?
La importación se corta con la sesión. Para no depender de tu conexión, corrila dentro de tmux (se instala con apt install tmux o dnf install tmux): si se cae el SSH, sigue corriendo, y la retomás con tmux attach.
¿Cuánto tarda?
Depende del tamaño del archivo, de cuántos índices tengan las tablas y del disco: los índices se arman a medida que entran los datos. Con pv ves el avance y una estimación del tiempo que falta.
¿Qué cambio en mi sitio después de importar?
Que apunte a la base nueva. En WordPress, por ejemplo, son DB_NAME, DB_USER y DB_PASSWORD en wp-config.php. Si la base está en el mismo servidor que el sitio, DB_HOST es localhost.
Seguí leyendo
Cómo cambiar o recuperar la clave de root de MySQL y MariaDB
Por qué el viejo UPDATE con PASSWORD() ya no funciona, cómo cambiar la clave con ALTER USER y cómo recuperarla si la perdiste, en MySQL 8 y MariaDB.
Cómo conectarte por SSH a tu servidor Linux desde Windows
Con la terminal que ya trae Windows 10 y 11, sin instalar nada: la primera conexión, las claves SSH, PuTTY como alternativa y qué hacer si no conecta.
Cómo respaldar y restaurar tu hosting en DirectAdmin
Crear un respaldo desde el panel, elegir qué incluir, bajarlo, programarlo y restaurarlo. Y por qué una copia que queda en el mismo servidor no alcanza.