【问题标题】:Downloading MySQL dump from command line从命令行下载 MySQL 转储
【发布时间】:2012-11-09 04:43:30
【问题描述】:

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

【问题讨论】:

标签: mysql command-line command-line-arguments linode


【解决方案1】:

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

例如:

如果是整个数据库,那么:

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

如果都是数据库,那么:

   $ 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 选项。它会提示你输入它而不是记录它。

【讨论】:

  • 您的答案连同stackoverflow.com/questions/2989724/… -- 应该按照他的要求去做,因为他确实包含了他需要下载的内容。要么是这样,要么是 wgetscp 在构建后检索所述文件。
  • 小注意不要在命令中直接输入密码比较安全。只有使用不带密码的 -p 选项才会在运行时提示输入密码,这样密码就不会存储在您的命令历史记录中(并且可能会被检索到)。所以使用以下命令:mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql
  • 而不是使用> 来保存,我宁愿使用-r 来防止出现外来字符的麻烦,或者关于编码问题的噩梦,如in this article 所述。
  • 对于大型/主动更新的数据库,使用 --single-transaction 参数。这会创建一个检查点并有助于确保一致性。此外,如果您有存储过程/函数/触发器,请使用开关 --routines --triggers
  • 您应该使用--result-file=db_backup.sql 而不是> db_backup.sql。来自MySQL documentation 的引用:“UTF-16 不允许作为连接字符集(请参阅Impermissible Client Character Sets),因此转储文件将无法正确加载。要解决此问题,请使用--result-file 选项,该选项会创建ASCII 格式的输出”。
【解决方案2】:

在最新版本的mysql中,至少在我的,你不能直接把pass放到命令中。

你必须跑:

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

然后它会要求输入密码。

【讨论】:

  • 删除-p 选项和实际密码之间的空格就可以了
  • @y2k-shubham 谢谢你,伙计,你太棒了!
【解决方案3】:

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

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

-p 表示您将输入密码,它与 db_name 无关。输入命令后,系统会提示您输入密码。输入并按回车键。

【讨论】:

    【解决方案4】:

    在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 命令,而不用在它的目录中。
    【解决方案5】:

    不要进入mysql,只需打开命令提示符并直接输入:

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

    【讨论】:

    • 从一个 5 年前的问题的已接受答案中复制第一行代码是业力农业的大胆策略。
    • 我在 Mysql 提示符下尝试了这个 MySQLdump 命令,但没有成功。所以刚刚回答:-)
    【解决方案6】:

    只需在你的cmd中输入mysqldumpmysqldump --help就会显示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
    

    【讨论】:

      【解决方案7】:

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

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

      【讨论】:

        【解决方案8】:

        如果您运行的是默认端口以外的 MySQL:

        mysqldump.exe -u username -p -P PORT_NO database > backup.sql
        

        【讨论】:

          【解决方案9】:

          对于那些想在命令行中输入密码的人。可以,但建议将其放在引号内,这样特殊字符就不会引起任何问题。

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

          【讨论】:

            【解决方案10】:

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

            假设您的远程服务器中有上述转储文件,现在您想将其下载到本地计算机。

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

            scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir
            

            【讨论】:

              【解决方案11】:

              对于某些版本的 MySQL 试试。

              sudo mysqldump [database name] > db_backup.sql
              

              【讨论】:

                【解决方案12】:

                mysqldump是MySQL目录下的另一个程序(.exe文件)

                Program Files\MySQL\MySQL Server 8.0\bin

                第 1 步:首先您必须转到路径并从文件夹中打开 CMD。

                第 2 步:然后在 CMD 中输入 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
                

                第 3 步:然后输入此命令

                mysqldump -u [user_name] -p [database_name] > D:\db_dump.sql
                

                注意: 您应该为输出文件提供绝对路径。 这里我提供D:\

                【讨论】:

                  【解决方案13】:

                  对于Windows用户,你可以去你的mysql文件夹运行命令

                  例如

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

                  【讨论】:

                  • 问题提示 MySQL 正在 Linux 上运行。
                  【解决方案14】:

                  如果您有名为 archiedb 的数据库,请使用:

                  mysql -p <password for the database> --databases archiedb > /home/database_backup.sql
                  

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

                  【讨论】:

                  • shell>mysqldump -p mypassword --databases mydb>/home/backup.sql.
                  【解决方案15】:
                  @echo off
                  for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
                  set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
                  set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
                  set "datestamp=%YYYY%.%MM%.%DD%.%HH%.%Min%.%Sec%"
                  set drive=your backup folder
                  set databaseName=your databasename
                  set user="your database user"
                  set password="your database password"
                  subst Z: "C:\Program Files\7-Zip" 
                  subst M: "D:\AppServ\MySQL\bin"
                  set zipFile="%drive%\%databaseName%-%datestamp%.zip"
                  set sqlFile="%drive%\%databaseName%-%datestamp%.sql"
                  M:\mysqldump.exe --user=%user% --password=%password% --result-file="%sqlFile%" --databases %databaseName%
                  @echo Mysql Backup Created
                  Z:\7z.exe a -tzip "%zipFile%" "%sqlFile%"
                  @echo File Compress End
                  del %sqlFile%
                  @echo Delete mysql file
                  pause;
                  

                  【讨论】:

                    猜你喜欢
                    • 2022-12-10
                    • 2012-09-22
                    • 2017-01-14
                    • 2011-07-22
                    相关资源
                    最近更新 更多