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
ログインしたらすぐに行うこと
- 「ユーザー」→「プロフィール」で、作ったアカウントのパスワードを長いものに変える
- mu-plugin を使った場合は、ファイルを削除したことを確認する
- 「ユーザー」→「ユーザー一覧」で、心当たりのない管理者がいないか確認する(乗っ取りが原因の場合は特に)
- 元の管理者アカウントが使えるようになったら、緊急用のアカウントを削除する
緊急用アカウントを削除するときは、そのアカウントで作った投稿の扱いを決めます。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のデータベース操作コマンド も参考にしてください。