Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSH连接到服务器并执行命令转储数据库_Ssh_Scp - Fatal编程技术网

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

SSH连接到服务器并执行命令转储数据库,ssh,scp,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/myd

我知道我想做什么,但我不太明白

我想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 
有没有办法让这一切顺利进行?或者也许有一种方法(在同一个脚本中)我可以将其scp下来

ssh root@server.com "mysqldump -uroot -pxxxxx mydb" > mydb.sql
这将ssh到您的服务器并在那里执行mysqldump。输出将在
STDOUT
上,它将通过SSH会话传输并转储到本地文件
mydb.sql

这里唯一的要求是基于密钥的ssh身份验证,否则会要求您输入密码,这不会很好地自动化

至于您的方法,您应该永远不要将数据库转储放在世界可读的webroot中。这只是对重大安全问题的尖叫。另外,您可能不应该在大部分工作中使用mysql根帐户。改为创建一个新的(受限制的)数据库用户。一般来说,您应该尽量减少权限,以避免坏人利用您的系统

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

这里唯一的要求是基于密钥的ssh身份验证,否则会要求您输入密码,这不会很好地自动化


至于您的方法,您应该永远不要将数据库转储放在世界可读的webroot中。这只是对重大安全问题的尖叫。另外,您可能不应该在大部分工作中使用mysql根帐户。改为创建一个新的(受限制的)数据库用户。通常,您应该尽量减少权限,以避免坏人利用您的系统。

我对此有一些问题。我用-t开关使它工作

ssh root@server.com -t "mysqldump -uroot -pxxxxx mydb" > mydb.sql
在我的服务器上,我还添加了mysqldump的完整路径

ssh root@server.com -t "/usr/local/mysql/bin/mysqldump-uroot -pxxxxx mydb" > mydb.sql

我对此有些问题。我用-t开关使它工作

ssh root@server.com -t "mysqldump -uroot -pxxxxx mydb" > mydb.sql
在我的服务器上,我还添加了mysqldump的完整路径

ssh root@server.com -t "/usr/local/mysql/bin/mysqldump-uroot -pxxxxx mydb" > mydb.sql

天才!!工作正常,密码提示也很好,我不想使用ssh密钥,因为它是一个实时服务器。一旦堆栈溢出允许,我将接受答案。好极了!通常,基于密钥的身份验证比基于密码的身份验证更安全(如果您以安全的方式处理密钥)。一般来说,我在所有服务器上都完全禁用了密码验证。为更新的帖子干杯,这真的很有帮助:)我还将为此数据库创建一个数据库用户:)非常感谢!!工作正常,密码提示也很好,我不想使用ssh密钥,因为它是一个实时服务器。一旦堆栈溢出允许,我将接受答案。好极了!通常,基于密钥的身份验证比基于密码的身份验证更安全(如果您以安全的方式处理密钥)。一般来说,我在所有服务器上都完全禁用了密码验证。为更新的帖子干杯,这真的很有帮助:)我还将为此数据库创建一个数据库用户:)非常感谢