WebAppsのMySQL In Appでパスワードの有効期限が切れてからの復旧方法

More than 1 year has passed since last update.

ある日、MySQL In App上で動いていたWordPressのサイトがデータベース接続エラーになり、動かなくなりました。
原因を見るために、MySQLのログを見てみました。
MySQLInAppでログを見るにはKuduを使ってD:\home\LogFiles\mysqlにアクセスし、中にあるログを表示します。
するとこのようなログが出力されていました。

[Note] Your password has expired. To log in you must change it using a client that supports expired passwords.

パスワードの有効期限きれてるよ!とのことで、MySQLのパスワードに有効期限があったことを知らなかったのですが、MySQL 5.7.4で追加されたようです。
デフォルトの設定では有効期限は365日ということで、ちょうど稼働させてから1年立っていたようです。
とりあえずmysqlにログインできないことには仕方がないので復旧してみました。

パスワードを再設定する

MySQLのパスワードの有効期限がきれているのでMySQLのパスワードを別の何かに変更します。
注意点として、Kudoでmysqlとコマンドを打ってもパスが通ってないのでmysqlは実行できません。
mysqlの実行ファイルはD:\Program Files (x86)\mysql\5.7.9.0\binに入っているのでカレントディレクトリを移動させます。

cd D:\Program Files (x86)\mysql\5.7.9.0\bin

続いて--connect-expired-passwordを使用してログインします。
ユーザー名とパスワードはみんな同じものですがポート番号だけ違うので自分のmysqlのポート番号を入れます。私はwp-config.phpを見ました。

./mysql -u azure --port={your mysql port} --password=password --connect-expired-password

この時おそらくKudoではmysqlログイン時の「>」のような表示がでないですがしかたがないので以下の文字列だけ出力されて、エラーが出ていなければログイン成功です。
キャプチャ.PNG

Kudoのコンソールのバグであると思われますが、毎回、コマンドを打つたびにログインしなおす必要があります。

以下のコマンドでいったんパスワードをtempcodeに変えます。

set password for 'azure'@'localhost' = password('tempcode');

このパスワードでろぐいんできるようになりましたが、phpmyadminはおそらくパスワードがpasswordでないとだめなので再度passwordに変更します。

./mysql -u azure --password=tempcode --port={your mysql port};
set password for 'azure'@'localhost' = password('password');

これでパスワードの有効期限が戻った状態で復旧が完了しました。
おそらくphpmyadminも使えて、WordPressもアクセスできる状態になったと思われます。

有効期限を無期限にする

しかしこのままだとまた1年後パスワードの再設定をしなければいけなくなるので有効期限設定をなくしましょう。
MySQLの有効期限の設定はdefault_password_lifetimeというグローバル変数によって決定されます。
通常ならmy.confなり、my.iniを変更すればよいそうなのですが、WebAppsではMySQLの実行ファイルの場所を書き換える権限がなかったので直接コマンドでグローバル変数を変更することにしました。

再度MySQLにログインして、以下のコマンドを叩きます。

SET GLOBAL default_password_lifetime = 0;

パスワードのライフタイムを0にすることで無期限にすることができます。
そして、グローバル変数が変更されたかを確認します。

SHOW GLOBAL VARIABLES  LIKE 'default_password_lifetime';

キャプチャ2.PNG

無事、無期限に変更できました。

おわりに

MySQL In AppはまだプレビューということでKudoで出力を見づらいなどいろいろありました。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.