首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqldump的问题:“--defaults extra-file”选项不能正常工作

问mysqldump的问题:“--defaults extra-file”选项不能正常工作
EN

Stack Overflow用户
提问于 2010-10-01 10:41:53
回答 4查看 28.5K关注 0票数 63

我从Windows命令行运行以下命令来备份我的数据库:

代码语言:javascript
复制
...\right_path\mysqldump --add-drop-database --databases my_database_name
                         --defaults-extra-file=d:\1.cnf

其中,d:\1.cnf包含以下内容:

代码语言:javascript
复制
[client]
user="my_user"
password="my_password"

不幸的是,我得到了以下错误消息:

代码语言:javascript
复制
mysqldump: unknown variable 'defaults-extra-file=d:\1.cnf'

如果我这样做了:

代码语言:javascript
复制
...\right_path\mysqldump --add-drop-database --databases my_database_name
                         --user="my_user" --password="my_password"

它的工作方式与预期一致。

我做错了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-01 12:06:04

我找到了答案:--defaults-extra-file必须是第一个选项。它的工作方式与预期一致:

代码语言:javascript
复制
...\right_path\mysqldump --defaults-extra-file=d:\1.cnf
                         --add-drop-database --databases my_database_name
票数 119
EN

Stack Overflow用户

发布于 2018-09-18 15:05:39

也会遇到这个问题。发现还有另一种情况会导致无法识别--defaults-extra-file选项。

当您在脚本中更改IFS时,可能会遇到此问题。解决方案是在执行mysql语句之前重置IFS。

以供参考。

票数 2
EN

Stack Overflow用户

发布于 2020-06-13 22:09:44

供将来参考:

可接受的答案是正确的,需要将--defaults-extra-file选项放在第一个位置。

要在容器中试用它,一个选项是:

代码语言:javascript
复制
$ docker network create dbnet
$ docker run --network dbnet -it --rm \
    --name db -e MYSQL_ROOT_PASSWORD=example \
    mysql echo "[client]\npassword=example\n">.mydbcreds.cnf  
$ docker run --network dbnet -it --rm \
    --name db-client -v "$PWD:/app/" mysql \
    mysql --defaults-extra-file=/app/.mydbcreds.cnf \
        --host db --user root \
        -e "SHOW SCHEMAS;"

不要忘记将凭据放在安全的VCS之外:

代码语言:javascript
复制
echo ".mydbcreds.cnf">>.gitignore

该文件可以包含所有连接参数(主机、用户等)。

不幸的是,这个文件不能包含数据库名称,如果每个环境都有一个不同的文件,那就太棒了。现在,我们在文件中设置了all for connection,并在命令中设置了DB name。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3836214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档