web-dev-qa-db-ja.com

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

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プロンプトでスクリプトが終了したことです。

4
Jim

単一のmysqlコマンドを使用して複数のステートメントを実行する方法を尋ねる場合は、セミコロンでステートメントを分離するだけです。

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

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

$ mysql < change_password.sql
5
l0b0

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

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

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

8