mysqldump不会导出单个数据库

时间:2013-12-03 22:26:47

标签: mysql mysqldump

我正在尝试从命令行使用mysqldump导出数据库。我使用以下语法:

mysqldump -u root -ppassword databasename > outputfile.sql

我已经尝试了几种变体,但我总是将以下内容作为输出文件的内容:

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

如果我排除数据库名称,我可以让mysqldump导出我的所有数据库,但它不会只导出一个数据库。

我在这里忽略了什么吗?

3 个答案:

答案 0 :(得分:2)

上述评论中的疑难解答:

  

这是正确的语法。我猜想mysqldump正在某处找到其他一些选项。也许它是一个shell别名,并且在别名定义中包含了-A这样的选项?尝试运行\mysqldump ...以使其无法使用。

您的回复:

  

@BillKarwin你和-A走在了正确的轨道上。我试过mysqldump --print-defaults,显然--all-databases是默认参数。我用--no-defaults运行它,它就像一个魅力。

问题是--all-databases被配置为默认选项。当您尝试将该选项与指定一个数据库的参数一起使用时,它会输出您描述的使用错误。

http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html表示all-databases可以是命令行标志,也可以是配置文件中的选项。

我建议您在/etc/my.cnf或$ HOME / .my.cnf中查找all-databases选项。它可以显示在[mysqldump]组或[client]组中。

答案 1 :(得分:1)

如何(uroot之间没有空格

mysqldump -uroot -ppassword databasename > outputfile.sql

答案 2 :(得分:0)

将root密码放在命令行中是一个非常糟糕的主意。至少,在您的主目录中创建一个.my.cnf,将权限设置为600(仅限rw),其中包含:

[mysqldump]
user=root
password=yourpassword

这将允许您在没有密码的情况下执行该特定命令。由于您的root用户没有特殊原因需要进行转储,为什么不创建一个可以执行此操作的用户呢?

据推测,你正在做mysqldump来支持事情。为了让您的生活更轻松,请将其设置为cron,如下面的示例所示,该示例在午夜执行。由于存在包含密码的.my.cnf文件,因此在命令

中不需要密码
0 0 * * * /usr/bin/mysqldump -u root -h localhost databasename > /home/someuser/outputfile.sql 2>&1