繁体   English   中英

mysqldump不会导出单个数据库

[英]mysqldump will not export an individual database

我正在尝试从命令行使用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导出所有数据库,但它不会仅导出一个数据库。

我在这里俯瞰什么吗?

通过以上评论进行故障排除:

那是正确的语法。 我猜想mysqldump正在某个地方使用其他一些选项。 也许这是外壳程序别名,别名定义中包含-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]组中。

怎么样(在uroot之间没有空格)

mysqldump -uroot -ppassword databasename > outputfile.sql

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

[mysqldump]
user=root
password=yourpassword

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

据推测,您正在执行mysqldump来备份内容。 为了使您的生活更加轻松,请在cron中将其设置为以下示例,该示例在午夜执行。 由于存在包含密码的.my.cnf文件,因此在命令中不需要密码

0 0 * * * /usr/bin/mysqldump -u root -h localhost databasename > /home/someuser/outputfile.sql 2>&1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM