如何使用终端从远程服务器执行“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”并在本地保存的主要内容,如果未能解决你的问题,请参考以下文章

如何从 .sh 可执行文件执行远程 Python 文件?

MySQLDump 从通过 SSH 连接的远程服务器到本地机器

linux如何从远程终端下载文件到本地磁盘?

从 php 网页运行期望时广告自定义终端大小

来自远程主机的 mysqldump

如何使用 python 从 .sql (mysqldump) 文件中执行“创建表查询”