从命令行下载MySQL转储

Phi*_*ley 276 mysql command-line command-line-arguments linode

我正在离开Linode,因为我没有必要的Linux系统管理员技能; 在我完成向更友好的noob友好服务的过渡之前,我需要下载MySQL数据库的内容.有没有办法可以从命令行执行此操作?

nic*_*har 587

您可以使用mysqldump命令行函数完成此操作.

例如:

如果它是一个完整的数据库,那么:

   $ mysqldump -u [uname] -p db_name > db_backup.sql
Run Code Online (Sandbox Code Playgroud)

如果是所有数据库,那么:

   $ mysqldump -u [uname] -p --all-databases > all_db_backup.sql
Run Code Online (Sandbox Code Playgroud)

如果它是DB中的特定表,那么:

   $ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql
Run Code Online (Sandbox Code Playgroud)

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

   $ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz
Run Code Online (Sandbox Code Playgroud)

如果你想远程执行此操作并且可以访问相关服务器,那么以下操作(假设MySQL服务器在端口3306上):

   $ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql
Run Code Online (Sandbox Code Playgroud)

它应该将.sql文件放在运行命令行的文件夹中.

编辑:如评论中所述,为避免在命令历史记录中包含密码,请使用-p不带密码的选项.它会提示你,而不是记录它.

  • 请注意,在命令中不输入密码更安全.仅使用不带密码的-p选项将在运行时提示输入密码,这样密码就不会存储在命令历史记录中(并且可能会被检索).所以使用以下命令:mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name> db_backup.sql (44认同)
  • 我不使用`>`进行保存,而是使用`-r`来防止出现外来字符的麻烦,或避免有关编码问题的噩梦,如[本文所述](https://makandracards.com/makandra/ 595以utf-8安全方式从MySQL倾销和导入)。 (3认同)
  • 您应该使用“--result-file=db_backup.sql”而不是“> db_backup.sql”。引用[MySQL文档](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html):“不允许UTF-16作为连接字符集(请参阅[不允许的客户端字符集](https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html#charset-connection-impermissible-client-charset)),因此转储文件将无法正确加载。解决方法对于此问题,请使用“--result-file”选项,该选项会创建 ASCII 格式的输出”。 (3认同)
  • 您的回答与http://stackoverflow.com/questions/2989724/how-to-mysqldump-remote-db-from-local-machine - 应该按照他的要求进行,因为他确实包含了他需要下载的内容。要么是这样,要么需要“wget”或“scp”来检索构建后的所述文件。 (2认同)
  • 对于大型/主动更新的数据库,请使用 --single-transaction 参数。这会创建一个检查点并有助于确保一致性。另外,如果您有存储过程/函数/触发器,请使用开关 --routines --triggers (2认同)

Lor*_*ate 10

在最新版本的mysql中,至少在我的版本中,你不能直接在命令中输入你的传递.

你必须运行:

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

然后它会要求输入密码.

  • 删除`-p`选项和实际*密码*之间的空格可以解决问题 (2认同)

dro*_*ooh 6

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

cd C:\xampp\mysql\bin

mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql
Run Code Online (Sandbox Code Playgroud)

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


And*_*rew 5

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

mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql
Run Code Online (Sandbox Code Playgroud)

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