【发布时间】:2015-02-21 05:25:03
【问题描述】:
我正在尝试执行一个shell脚本以root身份登录mysql并执行一些命令,为了避免将root的密码放在命令行中,我使用heredoc格式,如下所示。 然而,mysql 提示我输入密码,尽管我给了它正确的密码。
完全相同的语法在其他一些主机上也能完美运行,但在这里却不行。
为什么?
mysql@myhost:MySQL> mysql -uroot -p -s -P3306 -e 'SELECT NOW();' <<EOF
> MyPassword
> EOF
Enter password: <---- why does it require manual password entry in here?
2014-12-23 14:57:25
【问题讨论】:
-
MySQL 在读取密码之前总是显示提示。它不关心输入是来自终端还是来自here-doc。
-
@Barmar 是的,这是正确的。我想我需要澄清这个问题:在其他主机中,mysql提示“输入密码:”但它并没有停止;它只接受已经给定的密码。但是,在这种情况下,它会停在那里并等待手动输入密码。
-
你说得对,我在我的 Linux 系统上看到了这一点。它必须从
/dev/tty而不是stdin读取密码。 -
您是否考虑过使用
.my.cnf文件而不是将密码放入脚本中? -
@Barmar 不!但我试图避免它,因为我不应该对主机进行任何更改。顺便说一句......我试图让这个例子更清楚。感谢您的有用评论。