2015-07-02 39 views
5

我需要將mysql數據庫從遠程服務器複製到本地服務器。 我可以訪問該數據庫的唯一方法是使用ssh連接到遠程計算機(我們稱之爲X),然後從該計算機連接到mysql,並使用mysql -h address -u username -p password。我的限制是,我不能在運行數據庫的mysql服務器上執行轉儲,並且無法執行到計算機X的轉儲(出於無法更改的管理原因)。來自遠程服務器的mysqldump

有沒有辦法告訴mysql直接轉儲到我的本地服務器? (也許使用PIPE,雖然我不熟悉它)。 值得一提的是,我的服務器在Ubuntu服務器上運行,X也在linux上運行。

我試着尋找一個解決方案,但找不到這個確切的場景。

感謝任何幫助。

問候, 埃拉德

+0

您可以嘗試使用sshfs並在mysql服務器上映射一個遠程文件夾(如果可訪問,也許是您的本地PC)。然後將其用於轉儲。 (我假設你在使用linux mysql服務器) –

+0

你可以告訴ssh在遠程機器上運行一個命令,然後將輸出重定向到本地計算機上的一個文件 –

回答

3

您可以使用SSH的隧道功能:

ssh server-x -L 12345:remote-db-server:3306 

這將告訴SSH客戶端偵聽在本地機器上的TCP連接到端口12345(你是我的唯一連接),並將它們作爲server-xremote-db-server上的端口3306(默認MySQL服務器端口)的連接進行中繼。

然後,您可以在本地計算機上運行mysqldump,並告訴它連接到localhost端口12345.它實際上將連接到遠程數據庫服務器,並且從該服務器的角度來看,它將看起來像連接來自server-x

2

您可以使用SSH的標準輸入/輸出重定向功能:

$ ssh [email protected] "mysqldump -h host -u username -p dbname" > mylocalfile.sql 

使用此命令,mysqldump其轉儲寫到標準輸出,這將被重定向到您的本地shell的標準輸出。用> mylocalfile.sql您將STDOUT流寫入本地文件。