【发布时间】:2023-03-07 10:44:01
【问题描述】:
我无法理解为什么此行在命令行中有效:
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) 它使用的是密码 NO - 当我明确将用户名设置为 root 并输入密码时提示。
更新
如果我使用 bash 而不是 sh 也会失败 -- IE
zak@yserver:$ bashcontracts.sh
错误 1045 (28000): 用户 'zak'@'localhost' 的访问被拒绝(使用密码:否)
【问题讨论】:
-
您是否从运行交互式
mysql的同一用户处运行脚本?它在当前用户的.mylogin.cnf文件中查找。 -
我使用的是同一个用户 --
zak@