HOWTO · MySQL

Exporter la base de données MySQL à l'aide de MySQLdump

Nous apprendrons comment exporter une base de données MySQL à l'aide de l'utilitaire de ligne de commande mysqldump. Nous apprendrons également à exporter des tables à partir d'une base de données particulière.

Sur cette page

Utilisez mysqldump pour exporter une base de données MySQL dans un fichier SQL. Ajoutez des noms de tables pour limiter l’export, utilisez --databases ou --all-databases pour élargir sa portée, et utilisez --no-data pour exporter la structure sans les lignes. Les exemples expliquent les arguments des commandes et l’invite de mot de passe ; ils ne vérifient pas qu’un dump peut être restauré.

Exporter une base de données MySQL avec mysqldump

mysqldump est un utilitaire en ligne de commande qui exporte des bases de données MySQL sous forme d’instructions SQL. Un dump peut contenir les définitions et les données des tables, certaines tables, plusieurs bases de données nommées, toutes les bases de données ou uniquement la structure d’une base. Les commandes ci-dessous écrivent le dump dans un fichier ; elles ne vérifient pas que la sauvegarde obtenue peut être restaurée.

Comprendre la syntaxe et les options de mysqldump

Une commande type se présente ainsi : mysqldump -u USER -p [OPTIONS] DATABASE [TABLE ...] > FILE.sql. Remplacez les éléments en majuscules par votre compte, le nom de la base de données, les noms de tables éventuels et le chemin de destination. Le nom de la base de données précède les noms des tables. L’opérateur shell > redirige la sortie standard vers le fichier de destination et remplace ce fichier s’il existe déjà ; choisissez un nouveau chemin ou déplacez d’abord une sauvegarde existante si vous souhaitez la conserver.

L’option -u indique le nom d’utilisateur MySQL. Utilisez -p seul pour que l’utilitaire demande le mot de passe ; ne placez pas de mot de passe après -p, car il pourrait apparaître dans l’historique du shell ou dans les détails du processus. L’option --no-data omet les lignes des tables, --databases sélectionne des bases de données nommées et --all-databases sélectionne toutes les bases de données. Consultez la référence mysqldump de MySQL pour découvrir d’autres options et les détails correspondant à votre version installée.

Cet exemple shell autonome n’a pas été exécuté dans cette réécriture. Selon la sémantique de la redirection du shell, il écrit un texte d’exemple dans un fichier temporaire, puis affiche ce fichier ; il ne se connecte pas à MySQL et n’exécute pas mysqldump.

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

work_dir="$(mktemp -d)"
trap 'rm -rf "$work_dir"' EXIT
printf '%s\n' 'CREATE TABLE customer (id INT);' > "$work_dir/person.sql"
cat "$work_dir/person.sql"

Exporter une base de données

Pour exporter une base de données, exécutez mysqldump -u root -p person > person_backup.sql. Lorsque l’invite apparaît, saisissez le mot de passe de root. Le nom du fichier est relatif au répertoire courant de la commande ; utilisez un chemin absolu, par exemple /backups/person_backup.sql, pour choisir une destination précise. Vérifiez que le compte peut lire la base de données et que le répertoire de destination est accessible en écriture.

Exporter certaines tables

Indiquez d’abord le nom de la base de données, puis celui de chaque table à inclure. Pour une table, utilisez mysqldump -u root -p person customer > customer_table.sql. Pour deux tables, utilisez mysqldump -u root -p person customer employee > customer_employee.sql. Par défaut, ces commandes exportent les définitions et les données des tables sélectionnées. Si vous souhaitez un comportement différent, ajoutez des options documentées pour votre version de MySQL.

Exporter plusieurs bases de données ou toutes les bases

Pour exporter une ou plusieurs bases de données nommées, placez --databases avant leurs noms : mysqldump -u root -p --databases person courses > person_courses.sql. Cette option inclut dans le dump les instructions de création des bases de données, ce qui facilite l’importation des bases nommées.

Pour exporter toutes les bases de données accessibles au compte, utilisez l’option correctement orthographiée --all-databases : mysqldump -u root -p --all-databases > all_databases.sql. Les autorisations du compte déterminent les bases de données et les objets qui peuvent être inclus. Enregistrez le fichier dans un emplacement protégé, car un dump complet peut contenir des données sensibles.

Exporter la structure d’une base de données sans ses données

Utilisez --no-data pour exporter les définitions des tables sans leurs lignes : mysqldump -u root -p --no-data person > person_structure.sql. Cette méthode est utile pour obtenir une copie du schéma à des fins de développement ou de documentation. Elle se connecte tout de même au serveur MySQL et nécessite des droits adaptés ; elle ne convertit pas un fichier existant sans accès au serveur.

Conclusion

Choisissez la commande selon la portée souhaitée : indiquez une base de données pour l’exporter entièrement, ajoutez les noms de tables après celui-ci pour sélectionner des tables, utilisez --databases pour des bases nommées, --all-databases pour toutes les bases du serveur, ou --no-data pour exporter la structure sans les lignes. Saisissez le mot de passe à l’invite et choisissez une destination où le dump sera conservé en sécurité. Une commande réussie crée un fichier de dump, mais vous devez tester la restauration séparément avant de vous fier à ce fichier comme sauvegarde.