トラブル解決のナレッジ記事です。
Docker で立てた WordPress のログイン パスワードがわからなくなってしまったときの対処法を遺しておきます。

方法としては至ってシンプルかつ強引で、DB 上に記録されている WordPress のパスワードを書き換えてしまえ、というものです。


【この記事の解決策が適用できるケース】
・ docker-compose で WordPress のインスタンスを立ち上げた
・ /wp-admin でダッシュボードにログインしようと思ったが、ログイン パスワードを思い出せない
・ インスタンスのコンテナが立ち上がっている環境自体にはログイン可能で docker コマンドを発行できる
・ mysql のユーザー名、パスワード、データベース名自体はわかる (docker-compose.yml に記載している、など)

私が実施した環境は、mysql 5.7 + wordpress 6.4.2 の環境です。

注意: 本手順は WordPress の DB テーブルの手動変更が含まれるため失敗 (エラーなどを含む) すると、WordPress 環境が破壊されるおそれがあります。予めバックアップを取るなど、対策を取ってから実施するようにしてください。
(私はもう最悪捨てても構わない環境だったのでそのままやりました)


手順


1. 環境 (サーバなど) にログインする / SSH などで接続する
 ※docker コマンドを利用できるユーザーに切り替えてください

2. 対象の WordPress インスタンスの mysql コンテナの Container ID を調べる
 コマンド: docker ps -a

20240123-101_cid

3. 対象の mysql コンテナにログインする
 コマンド: docker exec -it [mysql コンテナの Container ID] bash

20240123-102_login

4. mysql にログインする
 コマンド: mysql -u [mysql のユーザー名] --password=[mysql のパスワード] [mysql のデータベース名]
 ※ユーザー名やパスワード、データベース名は、docker-compose.yml 内で指定しているかも?
 ※パスワードをコマンドラインにベタ書きでログインするため、お行儀が悪いよ!って警告が出ます

 私のローカルの検証環境はパスワード含めて wordpress で統一していたため、
 次のような感じ (大馬鹿) ↓
20240123-103_mysqllogin

5. ユーザー一覧を調べる
 mysql クエリ: SELECT * FROM wp_users;
 ※テーブル接頭辞をいじっている場合は、show tables などでテーブル一覧を調べるところから必要
20240123-104_mysqlwpusers

 user_login 列がユーザーのログイン名、user_pass 列がハッシュ化されたパスワードです。

6. SQL で対象のユーザーのパスワードを更新する
 mysql クエリ: UPDATE wp_users SET user_pass = MD5('[新しいログイン パスワード]') WHERE user_login = '[ユーザー ログイン名]';

 ※ユーザー名 = a32kita, 新パスワード = PasSW0rd の場合は
  UPDATE wp_users SET user_pass = MD5('PasSW0rd') WHERE user_login = 'a32kita';

 WHERE 句付け忘れると全ユーザーのパスワードが変更されるのでご注意を!


7. quit で mysql の対話実行から抜け、exit でコンテナからログアウトする


これで /wp-admin から新しいパスワードで WordPress のダッシュボードにログインできるようになります。