2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HameeAdvent Calendar 2016

Day 5

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

Last updated at Posted at 2016-12-05

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?