从命令行下载MySQL转储


306

我离开Linode是因为我没有必要的Linux sysadmin技能。在完成向更加友好的服务过渡之前,我需要下载MySQL数据库的内容。有什么办法可以从命令行执行此操作?



mysqldump是您想要的。
法鲁克·沙因

1
@AZinkey我想您会找到该帖子副本的可接受答案,并将我答案的内容(

Answers:


656

您可以使用mysqldump命令行功能完成此操作。

例如:

如果是整个数据库,则:

   $ mysqldump -u [uname] -p db_name > db_backup.sql

如果是所有DB,那么:

   $ mysqldump -u [uname] -p --all-databases > all_db_backup.sql

如果是数据库中的特定表,则:

   $ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql

您甚至可以使用gzip自动压缩输出(如果您的数据库很大):

   $ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz

如果要远程执行此操作,并且可以访问有问题的服务器,则可以使用以下命令(假设MySQL服务器位于端口3306上):

   $ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql

它会将.sql文件拖放到您从中运行命令行的文件夹中。

编辑:更新为避免在CLI命令中包含密码,请使用-p不带密码的选项。它会提示您输入而不记录下来。


1
将您的答案与stackoverflow.com/questions/2989724/…结合在一起 -应该按照他的要求去做,因为他确实包括他需要下载的内容。它要么或wgetscp将需要检索所述文件一旦建成。
Zak 2012年

47
请注意,不直接在命令中输入密码会更安全。只有在不使用密码的情况下使用-p选项,运行时才会提示输入密码,这样密码就不会存储在命令历史记录中(也可能会被检索到)。因此,使用以下命令:mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name> db_backup.sql
Pitt

3
而不是使用的>保存,我宁愿用-r,以防止外国字符的麻烦,或涉及编码问题,噩梦,如前所述本文中
Pathros

1
对于大型/主动更新的数据酶,请使用--single-transaction参数。这将创建一个检查点并有助于确保一致性。另外,如果您有存储过程/函数/触发器,请使用--routines --triggers开关
Accord_guy

1
您应该使用--result-file=db_backup.sql而不是> db_backup.sql。来自MySQL文档的引文:“不允许将UTF-16作为连接字符集(请参见不允许的客户端字符集),因此转储文件将无法正确加载。要解决此问题,请使用--result-file选项,该选项将在ASCII格式”。
马丁·布劳恩

13

在最新版本的mysql中,至少在我的版本中,您不能直接在命令中放入密码。

您必须运行:

mysqldump -u [uname] -p db_name > db_backup.sql

然后它将要求输入密码。


2
删除-p选项和实际密码之间的空格就可以了
y2k-shubham

8

如果从远程服务器下载,这是一个简单的示例:

mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql

-p表示您将输入密码,它与db_name无关。输入命令后,将提示您输入密码。输入并按Enter。


5

在Windows上,您需要指定mysqldump.exe所在的mysql bin。

cd C:\xampp\mysql\bin

mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql

将其保存到文本文件中,例如backup.cmd


或通常在PATH变量中包含mysql,这样您就可以在mysql任何地方运行命令,而无需进入其目录。
behz4d

2

打开命令提示符,然后直接键入此命令。不要进入mysql,然后键入此命令。

mysqldump -u [uname] -p[pass] db_name > db_backup.sql

1
在一个已有5年历史的问题上,从已接受的答案中复制第一行代码是一种业力大胆的策略。
菲利普·科普利

我在Mysql提示符下尝试了这个MySQLdump命令,但是没有用。所以刚刚回答了:-)
Nithin Raja

2

转到MySQL安装目录并从那里打开cmd。然后执行以下命令以获取数据库的备份。

mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql

1

只需输入mysqldumpmysqldump --help在您的cmd中将显示how to use

这是我的cmd结果

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help


1

对于那些想要在命令行中输入密码的用户。可以但建议在引号内传递它,以使特殊字符不会引起任何问题。

mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql

-1

使用此命令如果您具有名为archiedb的数据库,请使用此mysql -p --databases archiedb> /home/database_backup.sql

假设这是linux,请选择备份文件的保存位置。


shell> mysqldump -p mypassword-数据库mydb> /home/backup.sql。
Nabaasa Archie

-1

对于Windows用户,您可以转到mysql文件夹运行命令

例如

cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql

1
该问题表明MySQL在Linux上运行。
gmauch

-1

注意:此步骤仅在转储MySQL文件(上面的大多数答案已解决)之后执行。

它假定您在远程服务器中具有所述转储文件,现在您要将其转储到本地计算机。

要将转储的.sql文件从远程服务器下载到本地计算机,请执行

scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.