こんにちは。
先日のこちらの記事でも少し触れていますが、
Magentoには、管理画面のログイン認証を連続して間違った場合、アカウントがロックされ、一時的にログインをできないようにする仕組みがあります。
今回はそんな、ログインロックが行われた時の解除方法について調べてみました。
ログインロックの設定
まず前提として、Magentoでは、管理画面ログイン時にパスワードを6回連続して間違うと、30分間アカウントがロックされ、ログインができない状態になります。
この回数やロック時間は、管理画面から設定する事ができます。
[Stores>Configuration>ADVANCED>Admin>Security] のメニューより、「Maximum Login Failures to Lockout Account」や「Lockout Time (minutes)」から変更可能です。
アカウントがロックされるとどうなる?
ログイン画面では以下のエラーが表示されます。
(こちらのケースと同じエラーメッセージです)
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>';