2026年5月30日
2026年5月30日
WordPressのパスワードをFTPでリセットする方法(wp_set_passwordを使う)
WordPress にログインできず、ログイン画面の「パスワードをお忘れですか ?」から再設定のメールを送っても届かない場合でも、FTP(または SFTP、レンタルサーバーのファイルマネージャー)でサーバーのファイルを編集できれば、パスワードを変更できます。WordPress の関数 wp_set_password() を一時的に実行させる方法です。
この記事では、その手順と、使い終わったあとの片付け、データベースや WP-CLI を使える場合の別の方法を説明します。作業の前に、サイトのファイルとデータベースのバックアップを取っておきます。
まず確認すること
- メールの再設定を先に試す: ログイン画面の「パスワードをお忘れですか ?」で、ユーザー名かメールアドレスを入れて再設定のメールを送ります。迷惑メールのフォルダーも確認します。届かない場合や、登録したメールアドレスをもう受け取れない場合に、この記事の方法を使います。
- ユーザー名(ログイン名)がわかっているか: 以下の手順では、パスワードを変えるユーザーをユーザー名かメールアドレスで指定します。どちらもわからない場合は、後述の phpMyAdmin で
wp_usersテーブルのuser_loginを確認します。 - 自分のサイトであること: この方法はサーバーのファイルを書き換えられる人なら誰でも使えます。乗っ取りが疑われる場合は、パスワードを変えるだけでは不十分です(最後の「乗っ取りが疑われる場合」を参照)。
FTP でパスワードを変更する手順
WordPress の公式ドキュメント(Reset your password)では、使用中のテーマの functions.php の先頭に wp_set_password( '新しいパスワード', 1 ); を書く方法が紹介されています。ただしこの書き方は、ページを開くたびにパスワードを設定し直すため、ログインしたあとも消し忘れると問題が起きます。ここでは、テーマのファイルを触らずに済み、パスワードが変わったあとは何もしないファイルを mu-plugins に置く方法を使います。
手順1: 一時ファイルを作る
パソコンで次の内容のファイルを作り、reset-password-once.php という名前で保存します(文字コードは UTF-8)。$login と $new_pass を自分のものに書き換えます。
<?php
/**
* 一時的なパスワードリセット用。ログインできたらすぐに削除する。
*/
add_action( 'init', function () {
$login = 'admin'; // パスワードを変えるユーザーのユーザー名
$new_pass = 'ここに新しいパスワードを書く'; // 新しいパスワード(長く推測されにくいもの)
$user = get_user_by( 'login', $login );
// メールアドレスで探す場合は次の行を使う
// $user = get_user_by( 'email', 'you@example.com' );
if ( ! $user ) {
return;
}
// まだ新しいパスワードになっていないときだけ設定する
if ( ! wp_check_password( $new_pass, $user->user_pass, $user->ID ) ) {
wp_set_password( $new_pass, $user->ID );
}
} );
wp_set_password()は、パスワードを WordPress の方式でハッシュ化して保存する関数です。データベースに平文で入るわけではありません。wp_check_password()で「すでに新しいパスワードになっているか」を確かめてから設定するので、ページを開くたびにパスワードが設定し直されることはありません。- パスワードを変えると、そのユーザーのログイン中の状態(ほかのブラウザーでのログインを含む)は無効になります。
手順2: mu-plugins フォルダーにアップロードする
FTP クライアントやファイルマネージャーで、WordPress の wp-content フォルダーを開きます。中に mu-plugins というフォルダーがなければ作り、その中に reset-password-once.php をアップロードします。
wp-content/
mu-plugins/
reset-password-once.php
mu-plugins(Must Use プラグイン)フォルダーに置いた PHP ファイルは、管理画面で有効化しなくても自動で読み込まれます。
手順3: サイトを開いてからログインする
ブラウザでサイトのトップページかログイン画面(/wp-login.php)を開きます。この時点でパスワードが変わります。続けて、ユーザー名と手順1 で書いた新しいパスワードでログインします。
ログインできない場合は、次を確認します。
$loginのユーザー名が正しいか(表示名やニックネームではなく、ログインに使う名前)- ファイルを置いた場所が
wp-content/mu-plugins/の直下か(サブフォルダーの中は読み込まれません) - ファイルを開いたときに PHP の構文エラーで画面が真っ白にならないか(なった場合は、ファイルを削除して書き直します)
手順4: 一時ファイルを削除する
ログインできたら、すぐに wp-content/mu-plugins/reset-password-once.php を FTP で削除します。このファイルには新しいパスワードが平文で書かれているため、サーバーに残しておくのは危険です。
削除したら、管理画面の「ユーザー」→「プロフィール」で、もう一度別のパスワードに変更しておくと安心です。ファイルを経由したパスワードは、FTP の通信やパソコンに残ったファイルから漏れるおそれがあるためです(FTP は通信が暗号化されないので、使えるなら SFTP か FTPS を使います)。
あわせて、同じ画面の「メール」が今受け取れるアドレスになっているかを確認し、必要なら直します。次にパスワードを忘れたときに、メールで再設定できるようにするためです。
ほかの方法(データベースや SSH を使える場合)
phpMyAdmin で変更する
レンタルサーバーの管理パネルから phpMyAdmin を使える場合は、データベースの wp_users テーブル(接頭辞を変えている場合は xxx_users)で、対象ユーザーの user_pass を書き換えます。新しいパスワードを入力し、関数の欄で MD5 を選んで保存します。WordPress の公式ドキュメントでも紹介されている方法で、ログインすると WordPress が現在の方式のハッシュに保存し直します。
WP-CLI で変更する
SSH で WP-CLI を使える場合は、WordPress のフォルダーで次のように実行します。
# ユーザーの一覧を確認する
wp user list --fields=ID,user_login,user_email
# 新しいパスワードを自動生成して表示する(メールは送らない)
wp user reset-password admin --skip-email --show-password
--show-password と --porcelain は WP-CLI 2.8.0 で追加されたオプションです。古い WP-CLI では使えないため、wp cli version で版を確認します。wp user update admin --user_pass=新しいパスワード でも変更できますが、パスワードがシェルの履歴に残るので、実行後に履歴から消すなどの注意が必要です。
乗っ取りが疑われる場合
身に覚えのないパスワード変更やメールアドレスの変更でログインできなくなった場合は、パスワードを戻すだけでは不十分です。次も確認します。
- 「ユーザー」画面に、心当たりのない管理者ユーザーが追加されていないか
wp-content/mu-plugins/・wp-content/plugins/・テーマのフォルダーに、見覚えのないファイルがないかwp-config.phpの認証用キー(AUTH_KEYなど)を新しい値に変え、すべてのユーザーのログイン状態を無効にする
まとめ
- メールでの再設定ができないときは、FTP で
wp-content/mu-plugins/にwp_set_password()を実行する一時ファイルを置き、サイトを開いてからログインする wp_check_password()で確認してから設定すると、ページを開くたびにパスワードが設定し直されない- ログインできたら一時ファイルをすぐに削除し、管理画面でパスワードとメールアドレスを見直す
- phpMyAdmin(
user_passを MD5 で更新)や WP-CLI(wp user reset-password)が使えるなら、そちらでも変更できる