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"'
Rootパスワードを変更するための上記の構文は正しくない可能性がありますが、私が行き詰まっている部分は、mysqlで動作する1行のコマンドを生成しています。コマンドが2行を超える場合、MySQLプロンプトが入力され、MySQLコマンドがMySQLプロンプトが「exit」コマンドで閉じられると、bashスクリプトが実行されます。
私の目的は、bashスクリプトを介して関連するパスワード情報を収集し、単一のコマンドを実行してrootパスワードを変更してから、bashスクリプトに戻るか、またはbashプロンプトでスクリプトが終了したことです。
単一のmysql
コマンドを使用して複数のステートメントを実行する方法を尋ねる場合は、セミコロンでステートメントを分離するだけです。
$ mysql -e 'select 1; select 2'
+---+
| 1 |
+---+
| 1 |
+---+
+---+
| 2 |
+---+
| 2 |
+---+
または、SQLステートメントを含むファイルを作成して実行することもできます。
$ mysql < change_password.sql
Mysqlでクエリを実行する代わりに、mysqladminを使用します。
mysqladmin -u root -p'$oldrootpass' password '$newrootpass'
動作するはずですが、引用符を少し混乱させる必要があるかもしれません。