如何使用终端从远程服务器执行“mysqldump”并在本地保存

如何使用终端从远程服务器执行“mysqldump”并在本地保存,mysql,terminal,Mysql,Terminal,如何使用终端从服务器执行mysqldump 我做了以下工作: 首先,我登录了: ssh root@123.456.78.90 // then I enter my password 那么我会: mysql->show databases; mysqldump -u myusername -p the_database > db_backup.sql 之后: use the_database; 那么我会: mysql->show databases; mysqldum

如何使用终端从服务器执行
mysqldump

我做了以下工作:

首先,我登录了:

ssh root@123.456.78.90  // then I enter my password
那么我会:

mysql->show databases;
mysqldump -u myusername -p the_database > db_backup.sql
之后:

use the_database;
那么我会:

mysql->show databases;
mysqldump -u myusername -p the_database > db_backup.sql

在那之后,很明显,什么都没有发生,我也没有出错。因此,我的问题是,它在哪里保存备份?如何在本地计算机上获取
mysqldump

有多种备份方式和备份位置,但很可能您不希望将备份存储在运行数据库的同一台服务器上

如果您具有对服务器的ssh访问权限,则可以创建ssh隧道,最基本的示例可能是:

$ ssh -L 3307:localhost:3306 root@123.456.78.90
这将在本地打开端口
3307
(以防万一您已经在使用
3306
),并通过
123.456.78.90
将其转发到
localhost:3306

然后你可以做一些类似的事情:

$ mysqldump -h localhost -P 3307 -u myusername -p the_database > db_backup.sql
若要了解当前路径,请运行它,它将打印当前目录,并在其中创建
db\u 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';

使用ssh命令连接到服务器

按代码运行

mysqldump -u userName -p databaseName > /path/to/backup.sql

位置路径必须在同一台服务器上

ah ok,因此
pwd
我应该输入类似于
User/myusername/Desktop/somefolder/
的内容。您可以完全忽略
pwd
命令,它只是供您作为参考,并知道文件可能存储在哪里,例如,如果希望备份位于
/tmp/db_backup.sql
中,可以使用
myqldump-h localhost-P 3307-u myusername-P_数据库>/tmp/db_backup.sql
,如果不指定绝对路径,文件将存储在当前目录中,通常是
pwd
命令的输出,我是否应该在输入
mysql
命令后创建隧道?抱歉,这很新:-)取决于端口是否可访问,以及您在DB中的用户权限,您可以尝试直接连接而不使用ssh隧道,如果不起作用,请尝试创建隧道,然后尝试
mysqldump
确定,或者,什么也不发生:-请进一步解释?为什么很明显什么都没有发生?对不起,我选错了词,我想说的是我在视觉上看不到任何东西,我的意思是在某个地方没有可见的备份sql文件如果你将输出传输到某个文件,什么都没有打印-如果你想看到输出,跳过管道或在生成的管道上运行类似于
cat
的操作file@NicoHaase好的,但我不明白你在说什么如果你在命令行中使用
,你会将输出(这里是转储的数据)重定向到一个文件-这就是为什么你看不到输出的原因