Magento:管理画面のログインロックを解除したい

YK
2025-01-30
2025-01-30

こんにちは。
先日のこちらの記事でも少し触れていますが、
Magentoには、管理画面のログイン認証を連続して間違った場合、アカウントがロックされ、一時的にログインをできないようにする仕組みがあります。

今回はそんな、ログインロックが行われた時の解除方法について調べてみました。

ログインロックの設定

まず前提として、Magentoでは、管理画面ログイン時にパスワードを6回連続して間違うと、30分間アカウントがロックされ、ログインができない状態になります。
この回数やロック時間は、管理画面から設定する事ができます。


[Stores>Configuration>ADVANCED>Admin>Security] のメニューより、「Maximum Login Failures to Lockout Account」や「Lockout Time (minutes)」から変更可能です。

アカウントがロックされるとどうなる?

ログイン画面では以下のエラーが表示されます。
こちらのケースと同じエラーメッセージです)

The account sign-in was incorrect or your account is disabled temporarily. Please wait and try again later.

6回目のログイン失敗から30分間はロック状態となり、その間は、正しいパスワードで認証してもログインできない状態となります。

 

なお、ロックされているアカウントは、管理画面から確認する事が可能です。
[System>PERMISSIONS>Locked Users] のメニューより、ロック中の管理者アカウントが確認できます。

ロックを解除するには?

やっと本題です。
ログインロックを解除するには、以下の3つの方法があります。

 

①管理画面からロックを解除する

一番簡単な方法です。
先述の通り、[System>PERMISSIONS>Locked Users] のメニューでは、ロック中のアカウント一覧が表示されますが、その画面からロックを解除する事も可能です。

ロックされていないアカウントで管理画面にログインし、
  (1)Locked Usersの一覧より、ロック解除したいアカウントにチェック
  (2)一覧上部のプルダウンで「Unlock」を選択
  (3)「Submit」ボタンをクリック
を実施すると、ロックが解除されます。

 

②コマンドラインからロックを解除する

ロックされていないアカウントを他に持っていない場合、上記①の方法は使えないので、こちらを試してみてください。

コンソール上で以下のコマンドを実行するだけです。
{username}にはロック解除したいユーザ名を設定します。

$ bin/magento  admin:user:unlock  {username}     


例えば「admin2」ユーザのロック解除をしたい場合は以下コマンドを実行する事で、ロック解除が実施されます。

$ bin/magento  admin:user:unlock  admin2     
The user account "admin2" has been unlocked

 

 

③DBのupdate

データベースの値を直接変更する事で、ロックを解除する事も可能です。
(あんまり出番はないかもですが)

ちなみにロック中の管理者テーブル[admin_user] の状態は以下の通り。

mysql> select * From admin_user where username='admin2'\G
*************************** 1. row ***************************
                user_id:  1
           firstname:  test
            lastname:  test
             email:  xxx@future-s.com
           username: admin2

    ・・・

          
    failures_num: 6
       first_failure: 2024-12-25 16:43:08
     lock_expires: 2024-12-25 17:13:20

・failures_num : 失敗回数
・first_failure    : 初回失敗日時
・lock_expires  : ロック期限日時

これらのカラムにロック情報が設定されているので、以下のUPDATE文で元の初期状態に戻してあげると、実質ロック解除状態となります。

UPDATE admin_user 
SET failures_num=0, first_failure=NULL, lock_expires=NULL
WHERE username='<username>';