【发布时间】:2019-12-16 21:27:54
【问题描述】:
我正在寻找解决方案,以便在使用自动化脚本解决方案(即 Bash 脚本)时将密码安全地传递给 *nix 平台上的 MySQL 客户端。
到目前为止,我不得不意识到 MySQL 完全忽略了来自标准输入的密码输入(仍然在终端上要求输入密码,在自动化时崩溃)。
最糟糕的是,使用 ~/.mylogin.cnf 的解决方案也对我不起作用,似乎 MySQL 不知何故完全忽略了它。
我宁愿不使用命令行 -p 参数作为密码,以防止描述的“全方位”安全问题。
--defaults-file 和--defaults-extra-file 也没有给出解决方案,似乎密码是由客户端“不惜一切代价”提示的。
因此,对于那个原始(乍一看)任务,我已经没有解决方案了!
任何帮助将不胜感激!
【问题讨论】:
-
如果你在默认文件中有密码,它不应该提示输入。
-
确实,看起来有些东西阻止了客户端从定义的来源读取密码,我怀疑安装时 apt 用于 MySQL 包的任何编译选项。这可能是答案吗?
-
一切皆有可能,但这似乎不太可能。
-
无论如何,看来我显然坚持使用 -p 参数解决方案,这听起来有多糟糕。我看到的另一种方法是将密码传递给 MySQL,就像它来自终端流而不是标准输入流一样,仍然找不到它是怎么可能的。
-
我一直使用默认文件。它确实有效。我不知道您是如何调用客户端的,但一个常见问题是人们没有意识到
--defaults-file必须是 命令行上的第一个选项,在--host之前或--user或任何其他选项。此外,如果您在命令行上使用-p,即使您的选项文件或 .mylogin.cnf 中有默认值,它也会被强制提示。
标签: mysql passwords client config stdin