bash スクリプトで MySQL のルート パスワードを変更する

bash スクリプトで MySQL のルート パスワードを変更する

私は MySQL のルート パスワードを変更する bash スクリプトを作成しようとしています。以下は現在使用しているコード スニペットです。

#!/bin/sh
clear
echo "Enter the current password for the root mysql account."

read oldrootpass

echo "Enter a new password for the root mysql account."

read newrootpass
mysql -u root -p$oldrootpass -Bse 'UPDATE user SET password=PASSWORD("$newrootpass") WHERE User="root"'

ルート パスワードを変更するための上記の構文は正しくない可能性がありますが、私が行き詰まっている部分は、mysql を操作するための 1 行のコマンドを生成する部分です。コマンドが 2 行を超えると、MySQL プロンプトが入力され、MySQL プロンプトが 'exit' コマンドで閉じられた後に、bash スクリプト内の MySQL コマンドが実行されます。

私の意図は、bash スクリプトを介して関連するパスワード情報を収集し、ルート パスワードを変更する単一のコマンドを実行してから、bash スクリプトに戻るか、スクリプトが終了したら bash プロンプトに戻ることです。

答え1

1 つのコマンドで複数のステートメントを実行する方法を尋ねている場合はmysql、単にセミコロンで区切ることもできます。

$ mysql -e 'select 1; select 2'
+---+
| 1 |
+---+
| 1 |
+---+
+---+
| 2 |
+---+
| 2 |
+---+

または、SQL ステートメントを含むファイルを作成して実行することもできます。

$ mysql < change_password.sql

答え2

mysql でクエリを実行する代わりに、mysqladmin を使用します。

mysqladmin -u root -p'$oldrootpass' password '$newrootpass'

動作するはずですが、引用符を少しいじる必要があるかもしれません。

関連情報