2026年5月20日

2026年5月20日

WordPressの管理者をデータベースから追加する方法:WP-CLI・phpMyAdmin(SQL)・mu-plugin

管理者のパスワードが分からない、管理者アカウントを誤って削除した、乗っ取られて権限を変えられた、などで WordPress の管理画面に入れなくなったときは、サーバー側から管理者ユーザーを新しく追加できます。

この記事では、次の3つの方法を説明します。SQL と動作は WordPress 6.9 と MySQL 8.0 で確認しています(2026年11月時点)。

方法 必要なもの 向いている場合
WP-CLI SSH でサーバーに入れる VPS や SSH が使えるレンタルサーバー
phpMyAdmin(SQL) データベースの管理画面 レンタルサーバーのコントロールパネルから phpMyAdmin を開ける
mu-plugin(一時ファイル) FTP などでファイルを置ける データベースを直接触れない

作業の前に、データベースのバックアップを取ってください。 レンタルサーバーのバックアップ機能や、phpMyAdmin の「エクスポート」で取得できます。

方法1:WP-CLI で作る(SSH が使える場合)

WordPress をインストールしたフォルダー(wp-config.php がある場所)で実行します。

wp user create new_admin admin@example.com --role=administrator

--user_pass を付けなければ、ランダムなパスワードが作られ、Password: の行に表示されます。シェルの履歴にパスワードを残さずに済むので、この使い方をおすすめします。

作成できたか、管理者の一覧で確認します。

wp user list --role=administrator --fields=ID,user_login,user_email
  • 別のフォルダーから実行する場合は、--path=/var/www/html のように WordPress の場所を指定します。
  • WP-CLI は root で実行すると警告を出して止まります。Web サーバーのユーザーで実行するか(例: sudo -u www-data wp user create ...)、理由があって root で実行する場合は --allow-root を付けます。
  • 既存のユーザーを管理者に戻すだけなら、wp user set-role ユーザー名 administrator で変更できます。

方法2:phpMyAdmin で SQL を実行する

ステップ1:テーブル接頭辞を確認する

WordPress のテーブル名には接頭辞(初期値は wp_)が付いています。wp-config.php の次の行で確認します。

$table_prefix = 'wp_';

phpMyAdmin の左側のテーブル一覧で、wp_users や wp_usermeta のような名前になっているかでも分かります。以下の SQL は接頭辞が wp_ の場合です。

ステップ2:SQL を実行する

phpMyAdmin で WordPress のデータベースを選び、「SQL」タブに次をまとめて貼り付けて実行します。ユーザー名・パスワード・メールアドレスは書き換えてください。

INSERT INTO wp_users
  (user_login, user_pass, user_nicename, user_email, user_registered, user_status, display_name)
VALUES
  ('new_admin', MD5('一時的なパスワード'), 'new_admin', 'admin@example.com', UTC_TIMESTAMP(), 0, 'new_admin');

SET @uid = LAST_INSERT_ID();

INSERT INTO wp_usermeta (user_id, meta_key, meta_value) VALUES
  (@uid, 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}'),
  (@uid, 'wp_user_level', '10');
  • LAST_INSERT_ID() は、直前に追加したユーザーの ID を取り出します。ID を調べて手で書き込む必要がありません。3つの文は1回の実行でまとめて送ってください(別々に実行すると @uid が引き継がれないことがあります)。
  • wp_capabilities の値 a:1:{s:13:"administrator";b:1;} は、「administrator 権限を持つ」という意味のデータです。s:13 は administrator の文字数なので、書き換えないでください。
  • user_registered は WordPress の仕様に合わせて UTC で記録します。

パスワードを MD5() で入れても、WordPress はこの形式を受け付けます。最初にログインしたときに、現在の方式(WordPress 6.8 以降は bcrypt)で保存し直されます。MD5 は安全な形式ではないため、ログイン後すぐにパスワードを変えてください(後述)。

接頭辞が wp_ でない場合

接頭辞は、テーブル名だけでなく wp_usermeta に入れるキー名にも付けます。例えば接頭辞が mysite_ なら、次のようになります。

INSERT INTO mysite_users
  (user_login, user_pass, user_nicename, user_email, user_registered, user_status, display_name)
VALUES
  ('new_admin', MD5('一時的なパスワード'), 'new_admin', 'admin@example.com', UTC_TIMESTAMP(), 0, 'new_admin');

SET @uid = LAST_INSERT_ID();

INSERT INTO mysite_usermeta (user_id, meta_key, meta_value) VALUES
  (@uid, 'mysite_capabilities', 'a:1:{s:13:"administrator";b:1;}'),
  (@uid, 'mysite_user_level', '10');

キー名を wp_capabilities のままにすると、ユーザーは作られても権限が付かず、ログインしても管理画面に「権限がない」という旨のメッセージが出て使えません。

方法3:一時的な mu-plugin で作る(データベースを触れない場合)

FTP やファイルマネージャーで、wp-content/mu-plugins/ フォルダーに次のファイルを置きます(フォルダーが無ければ作ります)。mu-plugins に置いた PHP ファイルは、有効化しなくても自動で読み込まれます。

ファイル名の例: wp-content/mu-plugins/emergency-admin.php

<?php
// 緊急用の管理者を1回だけ作る。ログインできたらすぐにこのファイルを削除する
add_action( 'init', function () {
    if ( username_exists( 'emergency_admin' ) ) {
        return;
    }
    $user_id = wp_create_user( 'emergency_admin', 'ここに長い一時パスワード', 'emergency@example.com' );
    if ( ! is_wp_error( $user_id ) ) {
        $user = new WP_User( $user_id );
        $user->set_role( 'administrator' );
    }
} );

ファイルを置いたらサイトを一度開き、/wp-login.php から emergency_admin でログインします。ログインできたら、すぐにこのファイルを削除してください。 パスワードがファイルに平文で書かれているためです。

  • メールアドレスが既存のユーザーと重なると、ユーザーは作られません。使われていないアドレスにします。
  • wp-config.php にこのコードを書くと、WordPress の関数が読み込まれる前に実行されるため、add_action() が未定義のエラーでサイトが表示されなくなります。wp-config.php には書かないでください。

マルチサイトの場合

マルチサイトでは、ネットワーク全体の管理者(特権管理者)の情報が別のテーブルにあり、サイトごとに wp_2_capabilities のようなキーも使われます。上の SQL だけではネットワーク管理画面に入れません。WP-CLI が使えるなら、ユーザーを作ったあと次のコマンドで特権管理者にします。

wp super-admin add new_admin

ログインしたらすぐに行うこと

  1. 「ユーザー」→「プロフィール」で、作ったアカウントのパスワードを長いものに変える
  2. mu-plugin を使った場合は、ファイルを削除したことを確認する
  3. 「ユーザー」→「ユーザー一覧」で、心当たりのない管理者がいないか確認する(乗っ取りが原因の場合は特に)
  4. 元の管理者アカウントが使えるようになったら、緊急用のアカウントを削除する

緊急用アカウントを削除するときは、そのアカウントで作った投稿の扱いを決めます。WP-CLI では、残す側のユーザー ID を --reassign で指定します。

wp user list --role=administrator --fields=ID,user_login
wp user delete emergency_admin --reassign=1

--reassign=1 の 1 は、投稿を引き継ぐユーザーの ID です。一覧で確認した実在の ID を指定してください。管理画面から削除する場合も、削除の確認画面でコンテンツを引き継ぐユーザーを選べます。

WP-CLI でのデータベース操作は WP-CLIのデータベース操作コマンド も参考にしてください。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲