我想使用shell脚本定期在远程托pipe的站点上转储数据库。 不幸的是,服务器被locking得非常紧密,没有安装mysqldump ,二进制文件不能被普通用户/主目录执行(所以我不能自己“安装”),数据库驻留在一个单独的服务器上,所以我无法直接抓取文件。
我能做的唯一事情就是通过SSHlogin到networking服务器,并使用mysql命令行客户端build立到数据库服务器的连接。 如何将内容转储到一个SQL格式的文件? mysqldump ?
奖励:如果可能的话,我如何直接将内容转储到SSH连接的结尾?
我喜欢下面提出的SSH隧道的想法,但是,我需要双隧道。
localhost -> remote web server -> remote database server
这工作正常:
$ ssh -f -L 3306:mysql.example.com:3306 [email protected] -N
但是,试图login到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文件的解决scheme感兴趣。
你可以设置一个SSH隧道,并在你的本地机器上使用mysqldump 。
ssh -f -L 3306:localhost:3306 user@remoteserver -N mysqldump -P 3306 -h localhost -u dbuser dbname
http://sypex.net/en/ – 上传到服务器后,您可以使用此脚本进行数据库备份。 非常方便,快捷
上传这个脚本到您的Web服务器(希望您至less有FTP访问),启动它,指定数据库名称/主机(您的“单独的服务器”的地址)/用户名/密码和转储数据库到任何你想要的位置…
如果您的服务器是Web服务器,则可以使用将数据库转储到屏幕的PHP脚本。 在您的备份服务器上,放置一个用于存储转储页的cron。 然后,您的数据库仅通过HTTP转储到您的备份服务器。
不要忘记安全:每个人都可以倾倒你的基地。 input密码或IP限制…