我需要在远程服务器上执行数据库的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
Wrikken.. 224
因为我还没有在serverfault上看过它,答案很简单:
更改:
ssh -f -L3310:remote.server:3306 user@remote.server -N
至:
ssh -f -L3310:localhost:3306 user@remote.server -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
则假定配置(或默认)选项.请参阅手册,了解寻找/使用的选项文件.在Windows下,这可以是命名管道.
因为我还没有在serverfault上看过它,答案很简单:
更改:
ssh -f -L3310:remote.server:3306 user@remote.server -N
至:
ssh -f -L3310:localhost:3306 user@remote.server -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
则假定配置(或默认)选项.请参阅手册,了解寻找/使用的选项文件.在Windows下,这可以是命名管道.
您可以在本地针对远程服务器调用mysqldump.
对我有用的例子是:
mysqldump -h hostname-of-the-server -u mysql_user -p database_name > file.sql
我只是关注连接选项的mysqldump 文档.