Formation PUB200 : MySQL, 2018 Copie de sécurité d'une base de données MySQL

3.2 Exporter une base de données à l'aide de la ligne de commande (mysqldump)


La commande mysqldump peut être utilisée dans une fenêtre de commande pour générer un script SQL.

  • Ouvrez une fenêtre de commande.
  • Placez-vous dans le dossier bin de mysql (ex, avec AMPPS : C:\Program Files\Ampps\mysql\bin sous Windows ou /Applications/AMPPS/mysql/bin sous Mac). Attention : si vous avez déjà entré la commande mysql, faites exit pour retourner à l'invite de la fenêtre de commande.
  • Pour créer le script SQL d'une base de données, incluant les procédures et fonctions stockées, leurs commentaires ainsi que les déclencheurs, entrez la commande mysqldump suivie des paramètres désirés.

    Fenêtre de commande

    mysqldump -u monusagermysql -p --routines --comments --triggers mabd > C:\Users\monnom\Documents\BackupBD\mabd-2020-10-29.sql

  • Vous devez remplacer monusagermysql par le nom d'un usager MySQL qui détient les droits requis pour générer le script SQL. Remplacez également mabd par le nom de votre base de données et spécifiez le chemin désiré pour le script SQL.
  • MySQL vous demandera le mot de passe de l'usager MySQL spécifié (dans l'exemple : monusagermysql) puis générera le script SQL.

▼Publicité Le texte se poursuit plus bas

Script SQL de toutes les bases de données

Il est également possible de générer un script pour l'ensemble des bases de données.

Fenêtre de commande

mysqldump -u monusagermysql -p --routines --comments --triggers --all-databases > C:\Users\monnom\Documents\BackupBD\ToutesBDMySQL-2020-10-29.sql

Lancer le script automatiquement sans avoir à entrer le mot de passe

Lorsqu'une base de données est en ligne, il est prudent d'en effectuer une copie de sécurité sur une base régulière. Ceci peut être fait à l'aide d'un fichier batch sous Windows ou bash sous Mac ou Linux, que vous demanderez au système d'exploitation d'exécuter sur une base régulière.

Pour que ceci fonctionne, il faut que le script connaisse le mot de passe de l'usager MySQL.

Afin de ne pas ouvrir de trou de sécurité, il ne faut jamais écrire le mot de passe en clair dans un fichier batch ou bash.

La technique pour y parvenir consiste à demander à MySQL de crypter les informations dans le fichier ~/.mylogin.cnf sous Mac ou Linux ou C:\Users\monnom\AppData\Roaming\MySQL\.mylogin.cnf sous Windows.

Ceci est réalisé à l'aide de cette commande :

Terminal

mysql_config_editor set --login-path=local --host=localhost --user=monusagermysql --password

MySQL vous demandera d'enter le mot de passe de l'usager MySQL spécifié puis cryptera les informations dans le ficheir .mylogin.cnf.

Attention : si le mot de passe contient des caractères spéciaux, il faut l'entourer de guillemets lorsque mysql_config_editor vous demande de l'entrer.

De plus, le nom utilisé pour retrouver le code d'usager et le mot de passe (dans l'exemple : local), ne doit pas contenir de traits d'union.

Ensuite, pour générer le script, vous devez modifier légèrement la commande comme suit :

Fenêtre de commande

mysqldump --login-path=local --routines --comments --triggers mabd > C:\Users\monnom\Documents\BackupBD\mabd-2020-10-29.sql 

Et voilà, vous pouvez maintenant générer votre script de façon sécuritaire sans avoir à entrer le mot de passe à chaque fois !

Note : il faut savoir que le mot de passe est crypté dans le fichier .mylogin.cnf mais si ce fichier venait à tomber entre les mains d'un utilisateur malveillant, ce dernier n'aurait pas de difficulté à le décrypter.

Pour plus d'information

« mysqldump — A Database Backup Program ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

« 8.2 Database Backup Methods ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/backup-methods.html

« 10 Ways to Automatically & Manually Backup MySQL Database ». Noupe. http://www.noupe.com/development/10-ways-to-automatically-manually-backup-mysql-database.html

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Par Christiane Lagacé
Dernière révision le 9 juin 2020
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre