0
我需要更改MySQL守護程序啓動時創建的臨時根密碼。問題是臨時密碼有一些奇怪的字符(例如左/右括號),需要轉義。現在,有幾個職位(here,here,here)如何轉義字符,一般,但這個帖子是在使用bash腳本來改變這種狀況可能有特殊字符臨時MySQL root密碼的情況下。如何使用bash shell腳本更改臨時根密碼?
目前,我的腳本如下所示。
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 [email protected]@cc1122
# the following doesn't work either
# mysqladmin -u root -p$PASS password [email protected]@cc1122
echo "changed mysql password"
}
請注意臨時密碼可能如下所示。
- BYkc *),ZM3-_
如果我在終端上做如下類型,它的工作原理。
mysqladmin -u root -p'BYkc*),ZM3-_' password [email protected]@cc1122
但是在腳本里面,它失敗了。以下是我嘗試在$PW
附近單引號沒有成功的一些方法。
mysqladmin -u root -p"'$PW'" password [email protected]@cc1122
mysqladmin -u root -p\''$PW'\' password [email protected]@cc1122
mysqladmin -u root -p"$PW" password [email protected]@cc1122
mysqladmin -u root -p"\"$PW\"" password [email protected]@cc1122
什麼我做錯了任何想法?
是什麼'回聲 「的臨時密碼爲$ PW」'給你? 'mysqladmin -u root -p「$ PW」密碼aaBB @@ cc1122'應該可以正常工作。 – miken32
它如何失敗? –
控制檯的回顯顯示爲正確。但我仍然認證失敗,因爲我傳遞了錯誤的密碼。 –