2010-06-07 12 views
119

Potrzebuję zrobić mysqldump z bazy danych na zdalnym serwerze, ale serwer nie ma zainstalowanego mysqldump. Chciałbym użyć mysqldump na moim komputerze, aby połączyć się ze zdalną bazą danych i zrobić zrzut na moim komputerze.jak do mysqldump zdalnego db z lokalnej maszyny

Próbowałem utworzyć tunel SSH, a następnie zrobić zrzut, ale to nie działa. Próbowałem:

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

Tunel powstaje z powodzeniem. Jeśli wykonam

telnet localhost 3310 

Dostaję blurb, który pokazuje poprawną wersję mysql serwera. Jednak wykonując następujące wydaje się spróbować połączyć lokalnie

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

Ponieważ to pytanie jest bardziej związane z administracją niż z programowaniem, powiedziałbym, że ludzie, którzy są na stronie http://serverfault.com/, mogą ci lepiej pomóc. – Piskvor

+0

Zobacz [MSQL WorkBench] (http://mysql.com/products/workbench/) 5.2.22. Z łatwością pozwoli ci to zrobić. – Gary

+0

UWAGA: w przypadku zrzucania zdalnego serwera mysql, prosimy o dołączenie --host = sqlserver.host.name --port = 3306 – ro0ter

Odpowiedz

189

Ponieważ nie widziałem go jeszcze w ServerFault, a odpowiedź jest dość prosta:

Zmiana:

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

Aby :

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

I zmiana:

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

Do:

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

(nie używać localhost, że to jeden z tych 'szczególne znaczenie' nonsens, że prawdopodobnie łączy przez gniazda, a następnie przez port)

edycji: dobrze, aby opracuj: jeśli host jest ustawiony na localhost, zakłada się skonfigurowaną (lub domyślną) opcję --socket. Zobacz the manual dla których pliki opcji są poszukiwane/używane. W systemie Windows może to być potok nazwany.

+0

niesamowite! pracował jak urok! – maths

+2

Uwaga: 'localhost' często jest domyślnie' :: 1' IPv6, a nie '127.0.0.1'. –

5

Możesz wywołać mysqldump lokalnie na zdalnym serwerze.

Przykład, który pracował dla mnie byłoby:

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

Właśnie następuje mysqldump documentation na opcji przyłączeniowych.

+0

Najlepsza i najłatwiejsza odpowiedź dla mnie. – andreshg112

Powiązane problemy