2010-06-07 25 views
119

我需要在遠程服務器上執行數據庫的mysqldump,但服務器沒有安裝mysqldump。我想使用我的機器上的mysqldump連接到遠程數據庫並在我的機器上執行轉儲。如何從本地機器mysqldump遠程數據庫

我試圖創建一個SSH隧道,然後做轉儲,但這似乎並沒有工作。我試過了:

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

隧道創建成功。如果我做

telnet localhost 3310 

我得到一些blurb,顯示正確的服務器mysql版本。但是,這樣做以下似乎嘗試連接本地

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

由於這個問題與編程相關的問題更多,我想說http://serverfault.com/的友善的人可以幫助你更好。 – Piskvor 2010-06-07 13:44:43

+0

查看[MSQL WorkBench](http://mysql.com/products/workbench/)5.2.22。它很容易讓你做到這一點。 – Gary 2010-06-07 13:55:47

+0

注意:對於傾銷遠程mysql服務器,請包括--host = sqlserver.host.name --port = 3306 – ro0ter 2017-02-13 07:40:34

回答

189

由於我沒有在serverfault見過它,但得到的回答很簡單:

變化:

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

要:

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

而變化:

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 

(不要使用localhost,它是可能通過插槽連接而不是通過端口這些 '特殊意義' 廢話之一)

編輯:嗯,詳細說明:如果主機設置爲localhost,則假定已配置(或默認)--socket選項。請參閱the manual尋找/使用哪些選項文件。在Windows下,這可以是一個命名管道。

+0

真棒!像魅力一樣工作! – maths 2014-10-30 21:53:44

+2

請注意:'localhost'通常默認爲':: 1' IPv6,而不是'127.0.0.1'。 – 2016-10-18 07:04:47

5

您可以在本地對遠程服務器調用mysqldump。爲我工作

例子是:

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

我只是跟着上連接選項的mysqldump documentation

+0

對我來說最好的和最簡單的答案。 – andreshg112 2018-03-06 15:31:49

相關問題