Wordpressのログインパスワードを忘れてリセットメールも飛ばない時に何とかする方法
MySQLを直接いじれば何とかなるだろうと思い、やってみたら実際に何とかなった記録。
Wordpressのバージョンは3.6.1。
DB接続情報を調べる
ここら辺の情報も忘れちゃったうっかりさんは、wp-config.phpに直書きされているのでそれを見よう!
$ view wp-config.php
define('DB_NAME', 'wordpress'); define('DB_USER', 'wp_user'); define('DB_PASSWORD', 'wp_password'); $table_prefix = 'wp_';
MySQLのシェルを起動させる
$ mysql <DB_NAMEの値> -u <DB_USERの値> -p Enter password: <DB_PASSWORDの値>
今のWPログインユーザーを調べる
ログイン情報のテーブル名は$table_prefix + usersなので、上記の場合のテーブル名はwp_usersになります。
mysql> select user_login, user_pass from wp_users; +------------+----------------------------------+ | user_login | user_pass | +------------+----------------------------------+ | site_admin | 5f4dcc3b5aa765d61d8327deb882cf99 | +------------+----------------------------------+ 1 row in set (0.00 sec)
以降の例ではsite_adminさんのパスワードを変えてみます。
パスワードを変更する
mysql> update wp_users set user_pass = md5('<新しいパスワード>') where user_login = '<変更するログインユーザー>';
パスワードを変えるにはmd5関数に新しいパスワードを渡し、whereのuser_loginに変更したいユーザーを入れるだけです。
site_adminさんのパスワードを'new password'にする場合、
mysql> update wp_users set user_pass = md5('new password') where user_login = 'site_admin';
これでOKです。
実行後、user_passの欄が変更されていれば成功です。
mysql> select user_login, user_pass from wp_users; +------------+----------------------------------+ | user_login | user_pass | +------------+----------------------------------+ | site_admin | ac1ef17c2db40995e9fdd40b04a5a649 | +------------+----------------------------------+ 1 row in set (0.00 sec)
あとは、いつも通りにログインできるはずです。
おまけ(1)
Simple Login Lockdownプラグインを使っている場合、既に規定数以上ログインに失敗しているであろうので、一時的に無効にしておきましょう。
プラグイン内のlogin.phpファイルのinit関数の中身をコメントアウトすれば無効になります。
$ vi wp-content/plugins/simple-login-lockdown/inc/login.php
public static function init() { //add_action('plugins_loaded', array(self::instance(), '_setup')); }
※無事にログインできたら、忘れずに戻しておきましょう。