我需要在远程服务器上执行数据库的mysqldump,但该服务器未安装mysqldump。我想在我的机器上使用mysqldump连接到远程数据库并在我的机器上进行转储。
我试图创建一个ssh隧道,然后进行转储,但这似乎不起作用。我试过了:
ssh -f -L3310:remote.server:3306 user@remote.server -N
隧道创建成功。如果我做
telnet localhost 3310
我得到一些显示正确服务器mysql版本的内容。但是,执行以下操作似乎尝试在本地连接
mysqldump -P 3310 -h localhost -u mysql_user -p database_name table_name
正如我在serverfault上尚未看到的那样,答案很简单:
更改:
至:
ssh -f -L3310:localhost:3306 user@remote.server -N
并更改:
mysqldump -P 3310 -h 127.0.0.1 -u mysql_user -p database_name table_name
(不要使用localhost,这是可能通过套接字而不是通过端口连接的这些“特殊含义”废话之一)
编辑 :好,详细说明:如果将host设置为localhost,--socket则假定已配置(或默认)选项。请参见手册中有关寻求/使用选项文件的信息。在Windows下,这可以是命名管道。
localhost
--socket