2017-02-21 108 views
0

我需要更改MySQL守護程序啓動時創建的臨時根密碼。問題是臨時密碼有一些奇怪的字符(例如左/右括號),需要轉義。現在,有幾個職位(hereherehere)如何轉義字符,一般,但這個帖子是在使用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附近單引號沒有成功的一些方法。

什麼我做錯了任何想法?

+0

是什麼'回聲 「的臨時密碼爲$ PW」'給你? 'mysqladmin -u root -p「$ PW」密碼aaBB @@ cc1122'應該可以正常工作。 – miken32

+0

它如何失敗? –

+0

控制檯的回顯顯示爲正確。但我仍然認證失敗,因爲我傳遞了錯誤的密碼。 –

回答

0

它使用我雙引號工作:

password=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $11}') 
mysqladmin --user=root --password="$password" password [email protected]@cc1122