2010-06-07 125 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