如何使用终端从远程服务器执行“mysqldump”并在本地保存
Posted
技术标签:
【中文标题】如何使用终端从远程服务器执行“mysqldump”并在本地保存【英文标题】:How to do a `mysqldump` from a remote server with the terminal and save locally 【发布时间】:2019-08-16 13:36:06 【问题描述】:如何使用终端从服务器发送mysqldump
?
我做了以下事情:
首先我登录:
ssh root@123.456.78.90 // then I enter my password
然后我做:
mysql->show databases;
之后:
use the_database;
然后我做:
mysqldump -u myusername -p the_database > db_backup.sql
之后,很明显,什么都没有发生,我也没有收到错误。所以我的问题是,它在哪里保存备份以及如何在本地计算机上获得mysqldump
?
【问题讨论】:
您能进一步解释一下吗?为什么什么事情都没有发生这么明显? 对不起,我确实选错了词,我想说的是我在视觉上看不到任何东西,我的意思是在可见的地方没有备份 sql 文件 如果将输出通过管道传输到某个文件,则不会打印任何内容 - 如果您想查看输出,请跳过管道或在结果文件上运行类似cat
的内容
@NicoHaase 好的,但我不明白你在说什么
如果你在命令行中使用>
,你会将输出(这里:转储的数据)重定向到一个文件——这就是你看不到输出的原因
【参考方案1】:
有多种备份方式和备份位置,但很可能您不希望将备份存储在运行数据库的同一台服务器中。
如果您可以通过 ssh 访问服务器,则可以创建一个 ssh 隧道,最基本的示例可能是:
$ ssh -L 3307:localhost:3306 root@123.456.78.90
这将做的是在本地打开端口3307
(以防万一您已经在使用3306
)并将其转发到localhost:3306
通过123.456.78.90
然后你可以这样做:
$ mysqldump -h localhost -P 3307 -u myusername -p the_database > db_backup.sql
要知道您当前的路径,请运行pwd
,它将打印您的当前目录以及db_backup.sql
的创建位置,以防您不指定绝对路径。
不使用 ssh 你也可以尝试通过指定主机直接连接:
$ mysqldump -h 123.456.78.90 -u myusername -p the_database > db_backup.sql
如果端口打开,您可能只需要修改/授予用户权限以允许您的 IP 访问:
mysql> GRANT ALL ON the_database.* TO your_user@'123.456.78.90' IDENTIFIED BY 'secret';
【讨论】:
啊好的,所以pwd
我应该输入类似User/myusername/Desktop/somefolder/
的内容?
您可以完全忽略pwd
命令,仅供您参考并了解文件可能存储在哪里,例如,如果您希望备份在/tmp/db_backup.sql
可以使用myqldump -h localhost -P 3307 -u myusername -p the_database > /tmp/db_backup.sql
,如果不指定绝对路径,文件将存储在当前目录中,通常是pwd
命令的输出
好的,我是否应该在输入mysql
命令后创建隧道(请参阅上面的问题)?抱歉,这很新:-)
取决于端口是否可访问以及您在数据库中的用户权限,您可以尝试不使用 ssh 隧道直接连接,如果不起作用,请创建隧道然后尝试mysqldump
好的,要么,要么什么都没有发生:-s【参考方案2】:
使用 ssh 命令连接到您的服务器。
在代码下方运行
mysqldump -u userName -p databaseName > /path/to/backup.sql
位置路径必须在同一台服务器上
【讨论】:
以上是关于如何使用终端从远程服务器执行“mysqldump”并在本地保存的主要内容,如果未能解决你的问题,请参考以下文章