対象: WordPress(サーバーのphpMyAdminが使える環境)
難易度: ★★☆
所要時間: 約10分
管理者アカウントのパスワードを忘れてしまい、パスワード再設定メールも届く環境がない…という時の最終手段が、phpMyAdminからデータベースを直接書き換える方法です。ただしこの方法、WordPress 6.8を境に手順が変わっているので、古い解説記事の通りに操作すると失敗します。
従来(WordPress 6.7以前)は、phpMyAdmin上で新しいパスワードを入力し、隣の「関数」欄でMD5を選択するだけで完了していました。しかしWordPress 6.8でパスワードのハッシュ化方式がMD5からbcryptに変更されたため、この「MD5関数を選ぶだけ」の方法は現在のバージョンでは通用しません。「MD5で」と書かれている記事を見かけたら、それは6.7以前を対象にした古い情報だと判断してください。
現在の手順: bcryptハッシュを外部生成して貼り付ける
WordPress 6.8以降では、bcrypt形式のハッシュ値をあらかじめ生成してから、phpMyAdmin上ではその文字列をそのまま貼り付ける、という手順に変わります。
正規のログインパスワードは、管理者アカウントを乗っ取るための鍵そのものです。見知らぬ第三者のWebサイトに平文で入力すると、送信内容がログとして保存・悪用されるリスクがあります。「これから設定する本物のパスワード」を、素性の分からないオンラインツールに入力しないでください。下記のように、自分のサーバーやパソコン上で完結する方法でハッシュ値を生成するのが安全です。
WordPress 6.8のbcrypt化は内部的にPHPのpassword_hash()関数(PASSWORD_BCRYPT)をそのまま使っています。そのため、サーバーにSSH接続できる環境やローカルのPHP実行環境があれば、次のコマンドで全く同じ形式のハッシュ値を自分の手元だけで生成できます。
php -r "echo password_hash('設定したい新しいパスワード', PASSWORD_BCRYPT) . PHP_EOL;"wp_usersテーブルを開き、対象ユーザーの行の「編集」を選択します。
ここが従来との一番の違いです。user_passの値欄に生成済みのbcryptハッシュをそのまま貼り付け、関数欄は何も選択せず(空欄のまま)保存します。ここでMD5関数を選んでしまうと、せっかく生成したハッシュ値がさらにMD5変換されてしまい、正しくログインできなくなります。
実務での注意点: バージョンをダウングレードすると再びログインできなくなる
WordPress 6.8でbcrypt化されたパスワードは、その後WordPressを6.7以前にダウングレードしても、自動的にMD5形式へ戻ることはありません。何らかの事情でバージョンを戻す作業を行った場合は、ログインパスワードの再設定が別途必要になる点を覚えておいてください。
SSH接続ができ、WP-CLIが使える環境であれば、wp user update ユーザー名 --user_pass=新しいパスワードの1コマンドでパスワードを変更でき、ハッシュ方式を意識する必要すらありません。ただしロリポップなどの共有サーバーではroot権限がなくWP-CLIを使えないことも多いため、その場合は本記事のphpMyAdmin経由の方法が現実的な選択肢になります。
まとめ
- WordPress 6.7以前は「MD5関数を選ぶだけ」で完結したが、6.8以降はこの方法が使えない
- 6.8以降は、bcryptハッシュを外部ツールで先に生成し、関数を選ばず貼り付ける
- バージョンをダウングレードした場合、パスワードは自動で元に戻らないので再設定が必要
- WP-CLIが使える環境なら、ハッシュ方式を意識せず1コマンドで変更できる