我需要在远程服务器上执行数据库的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: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,这是可能通过套接字而不是通过端口连接的这些“特殊含义”废话之一)
编辑:好,要详细说明:如果将host设置为
localhost
,则假定已配置(或默认)--socket
选项。请参阅the manual,以查找/使用哪些选项文件。在Windows下,这可以是命名管道。关于mysql - 如何从本地计算机上mysqldump远程数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2989724/