首页 > 解决方案 > 在 shell 脚本中使用 mysql_config_editor

问题描述

我无法理解为什么此行在命令行中有效:

mysql --login-path=local

我得到了预期的典型mysql> _提示。

但是,当我在我的 shell 脚本中使用以下内容时:

#!/bin/bash
mysql --login-path=local -e "SELECT contractor FROM contractor" | while read contractor; do
    echo "Contractor: $contractor"
done

这就是我尝试运行那个小脚本时发生的情况:

zak@yserver:$ shcontractors.sh错误
1045 (28000): 拒绝用户 'zak'@'localhost' 的访问(使用密码:否)

问题是,当我设置时,local我使用了root用户(我知道坏主意——但这只是概念证明而不是生产),如下所示:

mysql_config_editor set --login-path=local --host=localhost --user=root --password

根据我的阅读,我正确地使用了它——它可以在命令行上运行......只是不在我的 shell 脚本中——我的语法有问题吗?

经过深思熟虑 - 我无法理解为什么 1)它使用zak用户名 - 并且 2)它使用 PASSWORD NO- 当我清楚地将用户名设置为root并在提示符上输入密码时。

更新

如果我使用bash而不是sh-- IE ,它也会失败

zak@yserver:$ bashcontracts.sh错误
1045 (28000): 拒绝用户 'zak'@'localhost' 的访问(使用密码:否)

标签: mysqllinuxbashshell

解决方案


推荐阅读