0
MySQLデーモンの起動時に作成される一時的なルートパスワードを変更する必要があります。問題は、一時パスワードにエスケープする必要のある奇妙な文字(たとえば、左かっこなど)があることです。さて、文字をエスケープする方法についてはいくつかの投稿(here、here、here)がありますが、この投稿はbashスクリプトを使って特別な文字を持つ一時的なMySQLルートパスワードを変更するコンテキストです。bashシェルスクリプトを使用して一時的なルートMySQLパスワードを変更するにはどうすればよいですか?
現在、私のスクリプトは次のようになっています。
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 "password aaBB @@ cc1122"はうまくいくはずです。 – miken32
どうして失敗するのですか? –
コンソールへのエコーが正しいと表示されます。しかし、私は間違ったパスワードを渡したかのように私はまだ認証の失敗を取得します。 –