Edited at
HameeDay 5

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

More than 1 year has passed since last update.

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