SSH连接到服务器并执行命令转储数据库
我知道我想做什么,但我不太明白 我想ssh到远程Web服务器上,执行命令转储数据库,然后关闭该数据库 更复杂的是,我对一个网格服务器这样做,所以ip地址并不总是相同的 我脑子里有以下想法,但需要调整才能实现: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
!/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密钥,因为它是一个实时服务器。一旦堆栈溢出允许,我将接受答案。好极了!通常,基于密钥的身份验证比基于密码的身份验证更安全(如果您以安全的方式处理密钥)。一般来说,我在所有服务器上都完全禁用了密码验证。为更新的帖子干杯,这真的很有帮助:)我还将为此数据库创建一个数据库用户:)非常感谢