Téléchargement du vidage MySQL à partir de la ligne de commande

306

Je m'éloigne de Linode car je n'ai pas les compétences d'administrateur système Linux nécessaires; avant de terminer la transition vers un service plus convivial, je dois télécharger le contenu d'une base de données MySQL. Existe-t-il un moyen de le faire à partir de la ligne de commande?

Phillip Copley
la source
mysqldump est ce que vous recherchez.
Faruk Sahin
1
@AZinkey Je pense que vous trouverez la réponse acceptée de cette publication et que vous aurez collé le contenu de ma réponse (mot pour mot) dans la première partie de leur réponse des mois plus tard ...
nickhar

Réponses:

656

Vous pouvez accomplir cela en utilisant la fonction de ligne de commande mysqldump .

Par exemple:

S'il s'agit d'une base de données entière, alors:

   $ mysqldump -u [uname] -p db_name > db_backup.sql

Si ce sont toutes des bases de données, alors:

   $ mysqldump -u [uname] -p --all-databases > all_db_backup.sql

S'il s'agit de tables spécifiques dans une base de données, alors:

   $ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql

Vous pouvez même aller jusqu'à la compression automatique de la sortie à l'aide de gzip (si votre base de données est très grande):

   $ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz

Si vous voulez le faire à distance et que vous avez accès au serveur en question, alors ce qui suit fonctionnerait (en supposant que le serveur MySQL est sur le port 3306):

   $ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql

Il doit déposer le .sqlfichier dans le dossier à partir duquel vous exécutez la ligne de commande.

EDIT: mis à jour pour éviter l'inclusion de mots de passe dans les commandes CLI, utilisez l' -poption sans le mot de passe. Il vous le demandera et ne l'enregistrera pas.

nickhar
la source
1
Votre réponse conjointement avec stackoverflow.com/questions/2989724/… - devrait faire ce qu'il demande, car il a inclus qu'il en a besoin téléchargé. C'est soit cela, soit un wgetou scpsera nécessaire pour récupérer ledit fichier une fois construit.
Zak
47
Petite remarque qu'il est plus sûr de ne pas saisir le mot de passe directement dans la commande. Seule l'utilisation de l'option -p sans mot de passe demandera le mot de passe lors de son exécution, de cette façon le mot de passe n'est pas stocké dans l'historique de vos commandes (et potentiellement récupéré). Donc, en utilisant la commande suivante: mysqldump -P 3306 -h [adresse_ip] -u [uname] -p nom_bd> db_backup.sql
Pitt
3
Au lieu d'utiliser >pour enregistrer, j'utilise plutôt -rpour éviter les problèmes avec les caractères étrangers, ou ce cauchemar concernant les problèmes de codage, comme indiqué dans cet article .
Pathros
1
Pour les bases de données volumineuses / activement mises à jour, utilisez le paramètre --single-transaction. Cela crée un point de contrôle et contribue à garantir la cohérence. Utilisez également les commutateurs - routines - déclencheurs, si vous avez des procédures / fonctions / déclencheurs
stockés
1
Vous devez utiliser à la --result-file=db_backup.sqlplace de > db_backup.sql. Citation de la documentation MySQL : "UTF-16 n'est pas autorisé en tant que jeu de caractères de connexion (voir Jeux de caractères de client non autorisés ), donc le fichier de vidage ne se chargera pas correctement. Pour contourner ce problème, utilisez l' --result-fileoption, qui crée la sortie dans Format ASCII ".
Martin Braun
13

Dans les dernières versions de mysql, du moins dans la mienne, vous ne pouvez pas mettre votre passe directement dans la commande.

Vous devez exécuter:

mysqldump -u [uname] -p db_name > db_backup.sql

puis il vous demandera le mot de passe.

Lorenzo Lerate
la source
2
supprimer l'espace entre l' -poption et le mot de passe réel fait l'affaire
y2k-shubham
8

Si vous téléchargez depuis un serveur distant, voici un exemple simple:

mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql

Le -p indique que vous entrerez un mot de passe, il ne se rapporte pas au nom_base. Après avoir entré la commande, vous serez invité à saisir le mot de passe. Tapez-le et appuyez sur Entrée.

Andrew
la source
5

Sous Windows, vous devez spécifier le bac mysql où réside mysqldump.exe.

cd C:\xampp\mysql\bin

mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql

enregistrez-le dans un fichier texte tel que backup.cmd

drooh
la source
ou ayant généralement mysql dans votre variable PATH afin que vous puissiez exécuter des mysqlcommandes de partout sans être dans son répertoire.
behz4d
2

Ouvrez l'invite de commande et tapez directement cette commande. N'entrez pas dans mysql et tapez cette commande.

mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Nithin Raja
la source
1
Copier la première ligne de code de la réponse acceptée sur une question vieille de 5 ans est une stratégie audacieuse pour la culture du karma.
Phillip Copley
J'ai essayé cette commande MySQLdump dans l'invite Mysql et n'ai pas fonctionné. donc juste répondu :-)
Nithin Raja
2

Accédez au répertoire d'installation de MySQL et ouvrez cmd à partir de là. Exécutez ensuite la commande ci-dessous pour obtenir une sauvegarde de votre base de données.

mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql
user8376416
la source
1

Tapez simplement mysqldumpou mysqldump --helpdans votre cmd s'afficherahow to use

Voici mon résultat cmd

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
Suganthan Madhavan Pillai
la source
1

Si vous utilisez MySQL autre que le port par défaut:

mysqldump.exe -u username -p -P PORT_NO database > backup.sql
Anand Raj
la source
1

Pour ceux qui veulent taper un mot de passe dans la ligne de commande. Il est possible mais recommandez de le passer entre guillemets pour que le caractère spécial ne cause aucun problème.

mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql
Tara Prasad Gurung
la source
-1

Utiliser ceci Si vous avez la base de données avec le nom archiedb, utilisez ceci mysql -p --databases archiedb> /home/database_backup.sql

En supposant que c'est Linux, choisissez où le fichier de sauvegarde sera enregistré.

Nabaasa Archie
la source
shell> mysqldump -p mypassword --databases mydb> /home/backup.sql.
Nabaasa Archie
-1

Pour les utilisateurs de Windows, vous pouvez aller dans votre dossier mysql pour exécuter la commande

par exemple

cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql
Narayan P
la source
1
La question suggère que MySQL fonctionne sous Linux.
gmauch
-1

Remarque: Cette étape ne survient qu'après avoir vidé votre fichier MySQL (que la plupart des réponses ci-dessus ont corrigé).

Il suppose que vous avez ledit fichier de vidage sur votre serveur distant et que vous souhaitez maintenant le faire descendre sur votre ordinateur local.

Pour télécharger le .sqlfichier vidé de votre serveur distant vers votre ordinateur local, procédez comme suit:

scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir
Ruto Collins
la source