SSH到服务器并执行命令来转储数据库

Nad*_*ine 0 ssh scp

我知道我想做什么,但我无法弄明白.

我想ssh到远程Web服务器,执行命令来转储数据库,然后关闭该数据库.

更复杂的是,我这样做是为了一个网格服务器,所以ip地址并不总是一样的.

我脑子里有以下想法,但需要调整才能让它起作用:

!/bin/bash
ssh root@server.com
mysqldump -uroot -pxxxxx mydb > mydb.sql
mv mydb.sql /var/www/site/httpdocs/public_folder
wget www.site.com/mydb.sql 
Run Code Online (Sandbox Code Playgroud)

任何想法如何使这项工作?或者也许有一种方法(在同一个脚本中)我可以将其scp下来?

Hol*_*ust 5

ssh root@server.com "mysqldump -uroot -pxxxxx mydb" > mydb.sql
Run Code Online (Sandbox Code Playgroud)

这将ssh到您的服务器并在那里执行mysqldump.输出将STDOUT通过SSH会话传输并转储到本地文件中mydb.sql.

这里唯一的要求是基于密钥的ssh身份验证,否则你会被要求输入不太自动化的密码......

至于您的方法,您永远不应该将数据库转储放入一个世界可读的webroot.这只是尖叫主要的安全问题.此外,您可能不应该使用mysql root帐户进行大部分工作.改为创建一个新的(受限制的)数据库用户.通常,您应该始终尽量减少权限,以避免恶意利用您的系统.