windows mysqldump出现问题:“--defaults-extra-file”选项未按预期工作

kgqe7b3p  于 2022-11-30  发布在  Windows
关注(0)|答案(5)|浏览(213)

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

...\right_path\mysqldump --add-drop-database --databases my_database_name
                         --defaults-extra-file=d:\1.cnf

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

[client]
user="my_user"
password="my_password"

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

mysqldump: unknown variable 'defaults-extra-file=d:\1.cnf'

如果我这样做:

...\right_path\mysqldump --add-drop-database --databases my_database_name
                         --user="my_user" --password="my_password"

它按预期工作。
我做错了什么?

ct3nt3jp

ct3nt3jp1#

我找到了答案:--defaults-extra-file必须是第一个选项。这将按预期工作:

...\right_path\mysqldump --defaults-extra-file=d:\1.cnf
                         --add-drop-database --databases my_database_name
jchrr9hc

jchrr9hc2#

供日后参考:
被接受的答案是正确的,需要将--defaults-extra-file选项放在第一个位置。
要在容器中尝试此方法,一个选项是:

$ 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之外:

echo ".mydbcreds.cnf">>.gitignore

该文件可以包含所有连接参数(主机、用户等)。
不幸的是,这个文件不能包含数据库名称,这将是可怕的,有一个不同的文件,每个环境。现在,我们有所有的连接在文件和数据库名称设置在命令中。

92dk7w1h

92dk7w1h3#

同样遇到这个问题.发现还有另外一种情况会导致--defaults-extra-file选项无法识别.
当你在脚本中改变IFS时,可能会遇到这个问题。解决办法是在执行mysql语句之前重置IFS。
供参考。

ddhy6vgd

ddhy6vgd4#

我知道这是Linux特有的,但我的搜索把我带到了这里。
我正在使用bitnami的LAMP堆栈,发现他们的“mysqldump”实际上是一个脚本:

LD_LIBRARY_PATH=/opt/lampstack-5.5.3-0/mysql/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
case "$@" in
  *--no-defaults*)
    exec $0.bin "$@"
    exit
esac
exec $0.bin --defaults-file=/opt/lampstack-5.5.3-0/mysql/my.cnf "$@"

这似乎不允许--defaults-file被传入...并工作(根据这里的公认答案)。

smdncfj3

smdncfj35#

另一种可能是--defaults-extra-file被忽略,这是因为你的home目录中有一个.my.cnf文件。~/.my.cnf文件会覆盖你在--defaults-extra-file中设置的值

相关问题