在shell脚本中使用mysql\u config\u编辑器

在shell脚本中使用mysql\u config\u编辑器,mysql,linux,bash,shell,Mysql,Linux,Bash,Shell,我很难理解为什么这一行在命令行中工作: 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 这就是我尝试运行该小脚本时发生

我很难理解为什么这一行在命令行中工作:

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
这就是我尝试运行该小脚本时发生的情况:

#!/bin/bash
mysql --login-path=local -e "SELECT contractor FROM contractor" | while read contractor; do
    echo "Contractor: $contractor"
done
zak@yserver:$sh承包商。sh
错误1045(28000):用户“zak”@“localhost”的访问被拒绝(使用密码:否)

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

从我所读到的内容来看,我正确地使用了它——它在命令行上工作。。只是不在我的shell脚本中——我的语法有问题吗

经过深思熟虑——我很难理解为什么1)它使用
zak
用户名——2)它使用密码
NO
——当我清楚地将用户名设置为
root
,并在提示符下输入密码时

更新

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

zak@yserver:$bash contractors.sh
错误1045(28000):用户“zak”@“localhost”的访问被拒绝(使用密码:否)


您是否从运行交互式
mysql
的同一用户处运行脚本?它在当前用户的
.mylogin.cnf
文件中查找。我使用的是同一个用户--
zak@