Drupal7で管理者のパスワードを忘れた時にすること

  • 2
    Like
  • 0
    Comment

Drupal7で開発中、万が一管理者(サイト構築時に作成したアカウント)のパスワードを忘れてしまった時の方法を記述します。

Drupalのusersテーブルについて

Drupal7のユーザーテーブルは以下のようになっている

mysql> desc users;

Field Type Null Key Default Extra
uid int(10) unsigned NO PRI 0
name varchar(60) NO UNI
pass varchar(128) NO
mail varchar(254) YES MUL
theme varchar(255) NO
signature varchar(255) NO
signature_format varchar(255) YES NULL
created int(11) NO MUL 0
access int(11) NO MUL 0
login int(11) NO 0
status tinyint(4) NO 0
timezone varchar(32) YES NULL
language varchar(12) NO
picture int(11) NO MUL 0
init varchar(254) YES
data longblob YES NULL

パスワードを忘れてしまって変更をしたい場合は、usersテーブルのpassフィールドの値を変更すればパスワードを変更をすることができる。
ちなみに管理者(サイト構築時に作成したアカウント)のuidは1である。

パスワード変更のための文字列を用意する

passフィールドに入る値はハッシュ化された値が入るためパスワードにしたい文字列のハッシュを用意します.Drupal7にはハッシュを作るスクリプトが以下にあるでこれを使う。

./scripts/password-hash.sh abcdefg

password: abcdefg hash: $S$DOy6K2AlgtD8pzi0Bdc8pHej5F12fHMmsLJG5mim9aYdq4FLEqfo

パスワードを変更する

tableに先ほど作成した。hashの値を挿入する

UPDATE users SET pass ='$S$DOy6K2AlgtD8pzi0Bdc8pHej5F12fHMmsLJG5mim9aYdq4FLEqfo' WHERE uid = 1;

drushが入っていれば以下のようにコマンドを叩くことによって変更することもできるらしい。(こちらは試していません。)
drush upwd --password="abcdefg" "管理者(サイト構築時に作成したアカウント)"

補足:パスワードロックがかかってしまった場合

drupalでは標準で連続5回同じユーザーのパスワードを間違えるとそのユーザーで一定期間ログインできなくなっている。

これを解消にするにはfooldテーブルの任意の値を消去すれば可能
desc flood;

Field Type Null Key Default Extra
fid int(11) NO PRI NULL auto_increment
event varchar(64) NO MUL
identifier varchar(128) NO
timestamp int(11) NO 0
expiration int(11) NO MUL 0

ログイン失敗時にはeventフィールドの値failed_login_attempt_ipとfailed_login_attempt_userがセットで作成されるためこの自分のアクセスに対応するこのセットを消去することによって一定期間待つ必要は無くなります。

参考にしたページ

https://www.drupal.org/node/1023428
https://www.drupal.org/node/44164