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

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

我想使用 shell 脚本定期转储远程托管网站上的数据库。不幸的是,服务器锁定得非常严格,没有mysqldump安装,二进制文件无法由普通用户/在主目录中执行(因此我无法自己“安装”它),并且数据库位于单独的服务器上,因此我无法直接获取文件。

我唯一能做的就是通过 SSH 登录到 Web 服务器,然后使用命令行客户端与数据库服务器建立连接。我怎样才能将内容转储到SQL 格式的mysql文件中? 附加:如果可能的话,我怎样才能将内容直接转储到 SSH 连接的我这一端?mysqldump


我喜欢下面提出的 SSH 隧道想法,但是我需要对其进行双隧道连接。

localhost -> remote web server -> remote database server

这没问题:

$ ssh -f -L 3306:mysql.example.com:3306 [email protected] -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。问题解决了!不过,我仍然对不需要我编辑 hosts 文件的解决方案感兴趣。

答案1

您可以设置 ssh 隧道并mysqldump在本地机器上使用。

ssh -f -L 3306:localhost:3306 user@remoteserver -N
mysqldump -P 3306 -h localhost -u dbuser dbname

答案2

http://sypex.net/en/ - 将此脚本上传到服务器后,您可以使用它进行数据库备份。非常方便快捷

答案3

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

答案4

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

不要忘记安全:每个人都可以泄露您的资料。设置密码或 IP 限制...

相关内容