Comment faire un import / export de base de données MySQL quand phpMyAdmin est trop lent ?

D’une manière générale, nous déconseillons les outils d’importation et d’exportation de base de données de phpMyAdmin, en particulier pour les bases de données de grande taille (plus de 100 Mo).

phpMyAdmin est un outil formidable pour gérer vos données MySQL. Cependant, dès que votre base de données dépasse quelques dizaines / centaines de méga-octets, les outils d’export, mais surtout d’import, peuvent se montrer instables, voir inutilisables : base de données exportée incomplète, impossibilité d’achever l’import d’une base de données, etc.

Il faut savoir que phpMyAdmin, en tant que script PHP, n’est pas bien optimisé pour certaines opérations, telles que l’import de larges bases de données.

C’est pourquoi, chez EasyHoster, vous disposez d’une interface en ligne de commande complète (shell SSH, Terminal). Pour l’import/export de vos bases de données. Ce canal se montrera beaucoup plus performant. Là où une tâche MySQL phpMyAdmin peut charger pendant plusieurs dizaines de minutes, la tâche réalisée via une ligne de commande Linux sera dans la plupart des cas instantanée !

Comment importer ou exporter une base de données MySQL avec des lignes de commande au lieu de phpMyAdmin sous Linux ?
Voici à quoi ressemble un import / une restauration de base de données MySQL, en ligne de commande, via le Terminal de cPanel.

Comment exporter une base de données MySQL en lignes de commande grâce à mysqldump ?

Pour l’exportation de votre base de données en ligne de commande, nous vous proposons 2 procédures :

  1. Non-verbose (recommandé)
  2. Verbose (non recommandé)
Important : si vous disposez d’un backup MySQL sous forme d’archive (.zip, .gz, .tar…), avant l’importation, il est nécessaire de décompresser celui-ci, par exemple, via le File Manager de cPanel.
Comment extraire / décompresser une archive .zip .gz .tar  via le File Manager d'un hébergement cPanel ?

1. Ligne de commande pour l’exportation non-verbose (recommandé)

Pour exporter une base de données MySQL sans phpMyAdmin, rendez-vous dans cPanel > Terminal et lancez la ligne de commande suivante : 

mysqldump -h localhost -u $UserMySQL -p $NomBaseMySQL > MYBKP.sql

MySQL Dump, attention au chevron !

Veuillez bien noter le sens (→) du chevron « > » qui indique que la commande mysqldump envoie les données vers « > » le fichier *.sql.

Voir, suite de instructions ci-dessous pour plus de détails.

2. Ligne de commande pour l’exportation en mode verbose (non recommandé)

Il n’est pas recommandé d’utiliser le mode Verbale, c’est-à-dire le paramètre -v, afin de ne pas afficher la longue liste de données et ne pas faire crasher votre navigateur ou votre shell. À toutes fins utiles, nous vous donnons malgré tout la ligne de commande ci-dessus.

Si vous le souhaitez, en ajoutant -v à votre commande mysqldump, vous pouvez afficher les milliers d’entrées MySQL en cours de traitement par l’utilitaire d’exportation.

L’affichage Verbale est souvent employé par les utilisateurs pour se rassurer, et avoir quelque chose à regarder pendant l’exportation. Cela permet d’être sûr que l’export ne s’est pas interrompu. Cependant, pour un Dump MySQL, le mode Verbale n’est pas très justifié, car les Dumps sont généralement très rapides (une poignée de minutes, tout au plus).

mysqldump -v -h localhost -u $UserMySQL -p $NomBaseMySQL > MYBKP.sql

Erreur lors de l’export de base de données chez OVH ?
Vous recevez ce type de messages : mysqldump: error: ‘Access denied; you need (at least one of) the PROCESS privilege(s) for this operation’ when trying to dump tablespaces. Ou encore : mysqldump: Got error: 2002: « Can’t connect to MySQL server on ‘ex1234-001.privatesql’ (115) » when trying to connect ?
Si vous le souhaitez, n’hésitez pas à vous inspirer de cette ligne de commande qui fonctionne bien pour OVH :
mysqldump --no-tablespaces --host=ex1234-001.privatesql --user=$UserMySQL --port=$PortMySQL --password=$PasswordMySQL $NomBaseMySQL > MYBKP.sql

Comment adapter ces lignes de commande d’export MySQL pour votre propre utilisation ?

$UserMySQL doit être remplacé par le nom d’utilisateur MySQL de votre base de données.

$NomBaseMySQL doit être remplacé par le nom de votre base de données.

MYBKP.sql peut être personnalisé, il s’agit du nom du fichier d’export qui sera créé à la racine de votre compte d’hébergement.

Préparez votre Mot de passe MySQL (copier, CTRL + C), il vous sera réclamé tout de suite après avoir entré cette commande (coller, CTRL + V).

Et n’oubliez pas d’enlever le signe  $ ! C’était pour indiquer la variable… 😉

Pensez à créer une base de données et un utilisateur MySQL

Si votre intention est de Migrer une base de données MySQL depuis un précédent système (un autre hébergeur par exemple), vers votre Hébergement cPanel EasyHoster, avant l’importation n’oubliez pas de créer votre base de données et votre utilisateur MySQL associé (privilèges).

Pour plus d’infos sur la création d’une base de données et d’un utilisateur MySQL avec privilèges, rendez-vous sur ce billet :

 Comment créer une base de données et un utilisateur MySQL sur un Hébergement cPanel ? →

Comment importer une base de données MySQL en lignes de commande ?

Pour l’importation de votre base de données en ligne de commande, nous vous proposons 2 procédures :

  1. Non-verbose (recommandé)
  2. Verbose (non recommandé)

1. Ligne de commande pour l’importation non-verbose (recommandé)

Pour importer une base de données MySQL sans phpMyAdmin, rendez-vous dans cPanel > Terminal et lancez la ligne de commande suivante : 

mysql -h localhost -u $UserMySQL -p $NomBaseMySQL < MYBKP.sql

Notez le sens du signe chevron « < », vers $NomBaseMySQL (à gauche) ← depuis MYBKP.sql (à droite). Cela indique que la commande MySQL récupère les données depuis le fichier « < » vers la base de données. Dans le cas d’un export de base de données en ligne de commande, le chevron « > » est dans l’autre sens (vers la droite).

Voir, suite de instructions ci-dessous pour plus de détails.

2. Ligne de commande pour l’importation en mode verbose (non recommandé)

Attention, le mode Verbose va afficher la (très) longue liste de données importées, durant toute la procédure d’importation. Cela risque de faire crasher votre navigateur Internet. Nous vous recommandons donc d’utiliser la ligne de commande précédente, sans le paramètre -v. À toutes fins utiles, voici tout de même la ligne de commande Verbale.

Pour exécuter l’import de base de données en mode Verbose, ajoutez le paramètre -v comme indiqué ci-dessous.

mysql -v -h localhost -u $UserMySQL -p $NomBaseMySQL < MYBKP.sql

Comment adapter ces lignes de commande d’import MySQL pour votre propre utilisation ?

$UserMySQL doit être remplacé par le nom d’utilisateur MySQL de votre base de données.

$NomBaseMySQL doit être remplacé par le nom de votre base de données.

MYBKP.sql doit correspondre au nom du fichier MySQL qui aura été téléversé à la racine de votre hébergement et décompressé si nécessaire (unzip).

Préparez votre Mot de passe MySQL (copier, CTRL + C), il vous sera réclamé tout de suite après avoir entré cette commande (coller, CTRL + V).

Comment utiliser les commandes mysql et mysqldump en passant un port MySQL qui n’est pas 3306 ?

Votre hébergement EasyHoster utilise le port par défaut de MySQL, 3306. Donc, vous n’avez rien à faire de ce côté. Cependant, si votre précédent hébergeur utilise un port MySQL différent, passez celui-ci grâce au paramètre –port=$PORT, où $PORT est remplacé par le numéro de port.

Voici un exemple pour l’export de base de données.

mysqldump -h localhost -u $UserMySQL --port=3306 -p $NomBaseMySQL > MYBKP.sql

Voici un exemple pour l’import de base de données.

mysql -h localhost -u $UserMySQL --port=3306 -p $NomBaseMySQL < MYBKP.sql

Comment retrouver les identifiants MySQL de mon site WordPress ?

Vous avez oublié les identifiants de votre base de données (nom d’utilisateur, mot de passe, etc) ? Pas de souci ! Ils peuvent facilement être retrouvé en éditant votre fichier wp-config.php

 Voici comment retrouver les identifiants MySQL de votre site WordPress →

Questions fréquentes sur l’Import / Export de bases de données MySQL en ligne de commande

Que faire en cas d’erreur “Access denied, you need the Process privilege to dump tablespaces” ?

Si vous rencontrez cette erreur avec mysqldump : Error: ‘Access denied; you need (at least one of) the PROCESS privilege(s) for this operation’ when trying to dump tablespaces, ajoutez simplement le paramètre --no-tablespaces à votre commande. Il n’est pas crucial de transférer les tablespaces car il s’agit simplement des caches et dictionnaires de données InnoDB pour la double écriture, l’enregistrement des logs de modification et d’annulation, etc.

Sommaire de ce billet
Besoin d'aide ?

Le site WordPress speed.easyhoster.net ➚ permet de tester le potentiel des solutions d'Hébergement Web EasyHoster.