如何在没有mysqldump的情况下转储远程数据库?


8

我想使用Shell脚本定期将数据库转储到远程托管站点上。不幸的是,服务器被锁定得很紧,没有mysqldump安装,二进制文件不能由普通用户/主目录执行(所以我自己不能“安装”它)并且数据库位于单独的服务器上,所以我无法直接抓取文件。

我唯一能做的就是通过SSH登录到Web服务器,并使用mysql命令行客户端建立与数据库服务器的连接。如何将内容转储为mysqldumpSQL格式的文件名?
奖励:如果可能,如何将内容直接转储到SSH连接的末端?


我喜欢下面提出的SSH隧道概念,但是,我需要对其加倍隧道。

localhost -> remote web server -> remote database server

这样可以正常工作:

$ ssh -f -L 3306:mysql.example.com:3306 user@ssh.example.com -N

但是,尝试登录mysql失败:

$ mysqldump -P 3306 -h localhost -u user -p db
Enter password: 
mysqldump: Got error: 1045: Access denied for user 'user'@'localhost'
   (using password: YES) when trying to connect

我猜它期望用户凭据是'user'@'mysql.example.com'。如何哄骗它使用它而不是“真实”主机?


好的,我可以通过添加127.0.0.1 mysql.example.com到hosts文件并通过进行连接来使其工作mysqldump -P 3306 -h mysql.example.com -u user -p db。问题解决了!我仍然对不需要我编辑主机文件的解决方案感兴趣。


1
我建议您在MySQL中授予'user'@'localhost'除了的权限'user'@'mysql.example.com',而不是编辑hosts文件。
Znarkus

Answers:




0

将此脚本上传到您的Web服务器(希望您至少具有FTP访问权限),启动它,指定数据库名称/主机(“单独服务器”的地址)/用户名/密码,并将数据库转储到您想要的任何位置...


0

如果您的服务器是Web服务器,则可以使用PHP脚本将数据库转储到屏幕上。在您的备份服务器上,放置一个cron来获取转储页面。然后,仅通过HTTP将数据库转储到备份服务器。

不要忘记安全性:每个人都可以倾倒您的基地。输入密码或IP限制...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.