web-dev-qa-db-fra.com

comment mysqldump db distante de la machine locale

J'ai besoin de faire un mysqldump d'une base de données sur un serveur distant, mais mysqldump n'est pas installé sur le serveur. Je voudrais utiliser le mysqldump sur ma machine pour me connecter à la base de données distante et faire le dump sur ma machine.

J'ai essayé de créer un tunnel SSH puis de faire le vidage, mais cela ne semble pas fonctionner. J'ai essayé:

ssh -f -L3310:remote.server:3306 [email protected] -N

Le tunnel est créé avec succès. Si je fais

telnet localhost 3310

Je reçois un texte de présentation qui indique la version correcte du serveur mysql. Cependant, procédez comme suit pour essayer de vous connecter localement

mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name
153
Mauritz Hansen

Comme je ne l'ai pas encore vu chez serverfault, la réponse est simple:

Changement:

ssh -f -L3310:remote.server:3306 [email protected] -N

À:

ssh -f -L3310:localhost:3306 [email protected] -N

Et changer:

mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name

À:

mysqldump -P 3310 -h 127.0.0.1 -u mysql_user -p database_name table_name

(n'utilisez pas localhost, c'est l'une de ces absurdités 'à signification spéciale' qui se connecte probablement par socket plutôt que par port)

edit : bien, pour élaborer: si l'hôte est défini sur localhost, une option configurée (ou par défaut) --socket est supposée . Voir le manuel pour quels fichiers d’option sont recherchés/utilisés. Sous Windows, cela peut être un canal nommé.

223
Wrikken

On peut appeler mysqldump localement sur un serveur distant.

Exemple qui a fonctionné pour moi:

mysqldump -h hostname-of-the-server -u mysql_user -p database_name > file.sql

J'ai suivi le mysqldump documentation sur les options de connexion.

74
Ondrej Burkert