2010-06-07 6 views
119

Je dois faire une 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 vidage sur ma machine.Comment faire pour mysqldump distant db de la machine locale

J'ai essayé de créer un tunnel ssh, puis de le faire, 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 le fais

telnet localhost 3310 

Je reçois un blurb qui montre la bonne version du serveur mysql. Cependant, faire ce qui suit semble essayer de se connecter localement

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

Comme cette question est plus liée à l'administration qu'à la programmation, je dirais que les gens aimables à http://serverfault.com/ pourraient mieux vous aider. – Piskvor

+0

Jetez un coup d'œil à [MSQL WorkBench] (http://mysql.com/products/workbench/) 5.2.22. Cela vous permettra facilement de faire cela. – Gary

+0

REMARQUE: pour le vidage d'un serveur mysql distant, veuillez inclure --host = sqlserver.host.name --port = 3306 – ro0ter

Répondre

189

Comme je l'ai pas vu à serverfault encore, et la réponse est assez simple:

Change:

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

Pour :

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

Et le changement:

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

Pour:

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

(ne pas utiliser localhost, il est l'un de ces non-sens de 'signification particulière' qui se connecte sans doute par la prise plutôt que par le port)

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

+0

génial !! travaillé comme le charme! – maths

+2

Attention: 'localhost' est souvent par défaut' '1' IPv6, pas' 127.0.0.1'. –

5

Vous pouvez appeler mysqldump localement sur un serveur distant.

exemple qui a fonctionné pour moi serait:

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

Je viens de suivre le mysqldump documentation sur les options de connexion.

+0

La meilleure réponse et la plus facile pour moi. – andreshg112

Questions connexes