【发布时间】:2017-07-11 19:52:30
【问题描述】:
我需要更改启动 MySQL 守护程序时创建的临时 root 密码。问题是临时密码有一些奇怪的字符(例如左/右括号)需要转义。现在,一般来说,有几篇文章(here、here、here)关于如何转义字符,但这篇文章是在使用 bash 脚本更改临时 MySQL root 密码的背景下进行的特殊个字符。
目前,我的脚本如下所示。
function startMysql {
sudo service mysqld start
echo "started mysql"
export PW=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $11}')
# export PASS=\'$PW\'
echo "temporary password is $PW"
mysqladmin -u root -p$PW password aaBB@@cc1122
# the following doesn't work either
# mysqladmin -u root -p$PASS password aaBB@@cc1122
echo "changed mysql password"
}
请注意,临时密码可能如下所示。
- BYkc*),ZM3-_
如果我在终端上输入以下内容,它会起作用。
mysqladmin -u root -p'BYkc*),ZM3-_' password aaBB@@cc1122
但在脚本内部,它失败了。以下是我尝试在$PW 周围加上单引号但没有成功的一些方法。
mysqladmin -u root -p"'$PW'" password aaBB@@cc1122mysqladmin -u root -p\''$PW'\' password aaBB@@cc1122mysqladmin -u root -p"$PW" password aaBB@@cc1122mysqladmin -u root -p"\"$PW\"" password aaBB@@cc1122
关于我做错了什么有什么想法吗?
【问题讨论】:
-
echo "temporary password is $PW"给你什么?mysqladmin -u root -p"$PW" password aaBB@@cc1122应该可以正常工作。 -
怎么会失败?
-
控制台的回显显示为正确。但我仍然会出现身份验证失败,就好像我输入了错误的密码一样。
标签: mysql bash quotes single-quotes mysqladmin