我需要在远程服务器上做一个数据库的 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配置(或默认)选项。--socket请参阅寻找/使用哪些选项文件的手册。在 Windows 下,这可以是命名管道。
localhost
--socket