はじめに
先日、WordPressのブログに管理者としてログインできなくなるという事態が発生しました。原因は定かではありませんが、おそらく二段階認証(two-factor認証)を設定した際に何らかの問題が発生し、パスワードがリセットされてしまったのではないかと考えています。
今回は、wp-cliを使用してパスワードをリセットし、無事にログインできるようになりました。その際の手順を以下にまとめます。
wp-cliとは
wp-cliは、WordPressのコマンドラインインターフェースです。これを使用すると、WordPressの様々な管理タスクをコマンドラインから実行できます。
wp-cliのインストール
SSHでWordPressのサーバーにログインします。
ssh user@your-wordpress-domain.com
以下のコマンドを実行して、wp-cliをダウンロード/インストールします
“/wordpress”ディレクトリは、実際にデータ(wp-login.php等)があるディレクトリに変更してください。
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp
### バージョン情報などが表示されれば、インストールは成功です。
$ sudo /usr/local/bin/wp --allow-root --path=/wordpress/
以下のコマンドを実行して、パスワードをリセットします
### 情報を見る
$ sudo /usr/local/bin/wp --allow-root --path=/wordpress/ user list
+----+------------+--------------+---------------------+---------------------+---------------+
| ID | user_login | display_name | user_email | user_registered | roles |
+----+------------+--------------+---------------------+---------------------+---------------+
| 1 | USER | USER | USER@DOMAIN | 20XX-XX-XX XX:XX:XX | admin |
+----+------------+--------------+---------------------+---------------------+---------------+
### 1:数字はID
$ sudo /usr/local/bin/wp --allow-root --path=/wordpress/ user update 1 --user_pass="XXXXXXXX"
これをしたらパスワードをXXXXXXXXにしてログイン出来ました。
DBを直接編集する方法について(今は無効)
インターネットで検索すると、同じような問題が発生した際に、データベース(DB)を直接編集してパスワードをリセットする方法が出てきます。具体的には、phpMyAdminなどのツールを使用して、wp_usersテーブルのuser_passフィールドを更新する方法や、MySQLで直接以下で更新する、以下の方法です。
> UPDATE wp_users SET user_pass = MD5('YYYYYYYYYQQQQQQ') WHERE ID = 1;
しかし、この方法ではパスワードのハッシュ化などの処理を適切に行う必要があり、知識がないと失敗する可能性が高いです。実際、私も試しましたが、うまくいきませんでした。
そのため、wp-cliを使用する方法が、より安全で確実な方法だと感じています。
まとめ
wp-cliを使用すると、WordPressのパスワードリセットが簡単に行えます。もしもの時のために、wp-cliのインストール方法や基本的な使い方を覚えておくと良いでしょう。
参考情報