WordPressの管理画面にログインできない時に、データベースから直接管理者ユーザーを作成する方法

WordPressの管理画面にログインできなくなってしまった。パスワードリセットのメールも届かない。登録したメールアドレスも使えない——。

そんな八方塞がりの状況でも、データベースに直接アクセスできれば、管理者ユーザーを強制的に作成してログインを復旧できます

この記事では、phpMyAdmin等を使ってWordPressのデータベースから管理者権限を持つユーザーを新規作成する手順を解説します。


こんなときに役立つ方法

  • 管理画面のログインパスワードを忘れた
  • パスワードリセットメールが届かない
  • 登録済みメールアドレスが使えなくなった
  • 他の管理者に不正にアカウントを変更された
  • サイト譲渡を受けたが、ログイン情報がない

事前に準備するもの

  • データベースへのアクセス手段
    • phpMyAdmin(最も一般的)
    • Adminer
    • MySQLコマンドライン
  • WordPressの wp-config.php ファイルの中身が確認できる環境
    • テーブルプレフィックス($table_prefix)を確認するため
  • データベースのバックアップ(作業前に必須)

⚠️ 作業前の必須事項:バックアップ

データベースの直接操作は、1文字のミスでサイト全体が動かなくなる可能性があります。必ず作業前にバックアップを取得してください。

phpMyAdminなら:

  1. 該当データベースを選択
  2. 「エクスポート」タブをクリック
  3. 形式「SQL」、実行方法「クイック」でダウンロード

テーブルプレフィックスを確認する

WordPressのテーブル名には、デフォルトで wp_ というプレフィックス(接頭辞)が付いています。ただし、セキュリティ対策として別のプレフィックスに変更されている場合があります。

wp-config.php を開いて、以下の行を探してください:

$table_prefix = 'wp_';
  • wp_ なら、以下の手順のまま使えます
  • wpxyz_ など別の値なら、以降のコード内の wp_ をすべて置き換えてください

この確認を怠ると、クエリは成功しても権限が反映されず、「ログインはできるけど管理画面に入れない」状態になります。


手順1:wp_users テーブルにユーザーを追加

まず、WordPressのユーザー情報を格納する wp_users テーブルに新規ユーザーを追加します。

phpMyAdminで該当データベースを選び、「SQL」タブを開いて以下を実行します。

INSERT INTO `wp_users` 
  (`user_login`, `user_pass`, `user_nicename`, `user_email`, `user_registered`, `user_status`, `display_name`) 
VALUES 
  ('newadmin', MD5('任意のパスワード'), 'newadmin', 'admin@example.com', NOW(), '0', 'New Admin');

各項目の意味

項目説明
user_loginnewadminログイン時に使うユーザー名
user_passMD5('任意のパスワード')パスワード(後述)
user_nicenamenewadminURL等で使われるスラッグ
user_emailadmin@example.com管理者メールアドレス
user_registeredNOW()登録日時(現在時刻)
user_status'0'ユーザーステータス(通常は0)
display_nameNew Admin表示名

パスワードの設定について

パスワードは MD5('任意のパスワード') のように書きます。例えばパスワードを temp1234 にしたいなら:

MD5('temp1234')

MD5は本来セキュリティ的に弱いハッシュ方式ですが、心配はいりません。WordPressは古いMD5ハッシュを検知すると、初回ログイン時に自動で現行のphpass形式に変換してくれます。ただし、ログインしたらすぐにプロフィール画面でパスワードを再設定することを推奨します。


手順2:追加したユーザーのIDを確認

次のステップで使うため、作成したユーザーのIDを取得します。

SELECT ID FROM wp_users WHERE user_login = 'newadmin';

返ってきた数値(例: 5)を控えておいてください。次の手順で使います。


手順3:wp_usermeta テーブルに管理者権限を付与

WordPressでは、ユーザーを追加しただけでは権限が付きません。wp_usermeta テーブルに権限情報を追加する必要があります。

先ほど確認したIDが 5 の場合:

INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES
  (5, 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}'),
  (5, 'wp_user_level', '10');

シリアライズ文字列の注意点

a:1:{s:13:"administrator";s:1:"1";} は、PHPのシリアライズ形式という特殊な書式です。以下の要素が厳密に一致している必要があります:

  • a:1 → 配列の要素数は1個
  • s:13 → 続く文字列 administrator は13文字
  • s:1 → 続く文字列 1 は1文字

この文字数指定が1つでもずれると、権限が認識されません。コピペする際は改変しないよう注意してください。

テーブルプレフィックスの再確認(重要)

meta_key の値 wp_capabilitieswp_user_levelwp_ 部分は、テーブルプレフィックスと一致させる必要があります

  • プレフィックスが wpxyz_ なら → wpxyz_capabilitieswpxyz_user_level
  • プレフィックスが mysite_ なら → mysite_capabilitiesmysite_user_level

ここを間違えると、ログインはできるのに管理画面で「権限がありません」と表示されるという厄介な症状になります。


手順4:ログインして動作確認

ここまで終わったら、ブラウザで /wp-admin/ にアクセスします。

  • ユーザー名: newadmin
  • パスワード: 手順1で MD5() に入れたパスワード

ログイン後にすぐやるべきこと

  1. プロフィール画面でパスワードを再設定
    • MD5ハッシュのまま運用しない
    • WordPress標準のパスワードジェネレーターで強力なものに変更
  2. メールアドレスを自分の使えるアドレスに変更
    • 次回パスワードリセットが必要になった際のため
  3. 他のユーザーアカウントを棚卸し
    • 不審な管理者ユーザーが他にいないか確認
    • 見覚えのないアカウントは削除

うまくいかない場合のチェックリスト

ログイン画面で「ユーザー名またはパスワードが違います」

  • user_login のスペルミスを確認
  • パスワードを MD5() で囲んだか確認(シングルクォートの位置も注意)
  • wp_users テーブルに実際にレコードが追加されているかSELECTで確認

ログインはできるが、管理画面に入れない / 機能が使えない

  • テーブルプレフィックスの不一致が最も多い原因
  • wp_usermeta テーブルの meta_key の値を再確認
  • シリアライズ文字列の文字数(s:13, s:1)が正しいか確認

「Cookie が無効になっています」と表示される

  • ブラウザのキャッシュ・Cookieをクリア
  • プライベートブラウジング(シークレットウィンドウ)で試す

まとめ

WordPressの管理画面にログインできなくなっても、データベースに直接アクセスできれば復旧は可能です。

重要なポイントをおさらい:

  • 作業前に必ずデータベースのバックアップを取る
  • テーブルプレフィックスを必ず確認して、コードを書き換える
  • シリアライズ文字列の文字数指定を崩さない
  • ログイン後は必ずパスワードを再設定する

この手順は強力な反面、間違えるとサイトが壊れる可能性もあります。不安な場合は functions.php 経由の方法や WP-CLI を選ぶ、もしくは詳しい人にサポートを依頼することをおすすめします。

あなたへのおすすめ