phpMyAdminの二要素認証失敗時の復旧手順(phpMyAdminアンインストール)

二要素認証失敗画面

はじめに

phpMyAdminでMySQLデーターベースを直接編集しようとしたら,二要素認証に失敗した。
パスワードは合っているはずだが?
特に設定変更した覚えはないのだが,知らないうちに変わっている。
なにか他に原因があるのかも。調査は後にしてとりあえずphpMyAdminを使用できないので,MySQLコマンドで編集したが,このままにしておけないので復旧させることにした。
復旧手順は結論から言うとphpMyAdminを一旦アンインストールしてから再度インストールする手順となる。

二要素認証を無効化 ←できない

検索したら二要素認証を無効化できるような記述があったので試してみる。
phpMyAdminの設定ファイル(config.inc.php)にて、
下記パラメーターの「true」を「false」に変更して二要素認証を無効化する

$cfg['TwoFactorAuth'] = true;

      ↓

$cfg['TwoFactorAuth'] = false;


設定項目が無かったので $cfg[‘TwoFactorAuth’] = false; のみ追加設定した。

上記設定では無効化できなかった。

この設定項目が効かないのは,phpMyAdminのバージョン(5.2.1)等が関係しているのか。

phpMyAdminアンインストール

次の方法としてはphpMyAdminをアンインストールして再度インストールするしかない。
phpMyAdminのインスールを思い出してみたら,ファイルを配置して環境保管領域データーベースを作成したのみでレジストリーや環境変数等のシステム領域は触っていないので,案外簡単にアンインストールが出来そうだ。

phpMyAdminのファイル削除

phpMyAdminをインストールしたフォルダーを削除またはリネームすることで,当該サーバー環境でphpMyAdminは動作しなくなるのだが,後の再インストールの手間を考えるとこの項目は不要と考える。phpMyAdminのファイルは触らずに残しておく。この機会にバージョンアップする場合は削除する。

phpMyAdminの環境保管領域を削除

MySQLデーターベース内の環境保管領域である「phpmyadmin」データーベースを削除するには,MySQLコマンドを使用して削除する。

手順
0.念のためデーターベース一覧を取得・確認しておく。「行番5」
1.phpmyadminデーターベースをバックアップ(問題があれば戻し用)「行番8」
2.phpmyadminデーターベースを削除(リネームしたいのだがコマンドがない)「行番11」
3.データーベース一覧で削除確認。他のデーターベース健全性確認「行番5」
4.問題あればデータベース復元「行番15,18」

行頭に「mysql>」が記載されているコマンドは MySQL monitorにログインして実行する。
記載のないコマンドはコマンドプロンプトで実行可能。

#mysqlにログイン
mysql -u root -p

#データーベース一覧確認
mysql> show databases;

#データーベース「phpmyadmin」をバックアップ
mysqldump -u root -p phpmyadmin > phpmyadmin_dump.sql

#データーベース「phpmyadmin」を削除
mysql> drop database phpmyadmin;

#データベース復元
#新規にデータベースの器作成
mysql> create database phpmyadmin;

#データーベース「phpmyadmin」をリストア
mysql -u root -p password phpmyadmin < phpmyadmin_dump.sql

※戻しを考えないのであれば「データーベース「phpmyadmin」を削除」のみ実施する。

phpMyAdminインストール

インストール方法は過去記事参照
ファイルの削除をしていないのであれば,ログインして環境保管領域の設定から行う。

これでログインできてMySQLデーターベースを触れるようになった。

おわりに

なぜ二要素認証が失敗したのかよくわからない。スマホのアプリ「Google Authenticator」に問題があるのか? またはphpMyAdminの「認証アプリ(2FA)」設定に問題があるのか?
いずれにしても問題発生時の復旧方法が判明したので,今後発生時に同様の対応で復旧できる。セキュリティを強固にするには二要素認証を有効化しておいたほうがよい。

追記 サーバー時刻の同期がされていると思っていたが,時刻同期設定が解除されて数分ほど遅れていた。(-_-;)汗 30秒毎に認証コードが更新されるので30秒以上時刻差があると100%認証されない。 単純なミスだった_(._.)_