2020年2月15日土曜日

Redmineの管理者パスワード忘れた

docker上に作成していたRedmine・・・。勉強がてら使っていたのだけど、通常ユーザーしか使ってなくて、管理者パスワード忘れてしまった。
不幸なことに、パスワードリセットのためのメールアドレスは設定していない。
幸いなことに、データーベースへのアクセスは出来る。
ちなみに、Redmineのバージョンは4.0.4.stableを使っている。

一般的な方法

redmineのFAQに書いている方法
http://redmine.jp/faq/administration/reset-admin-password/
これが、安全そうだけど、docker上で動いているRedmineへのアクセスがめんどくさいな〜と思ってしまい。。
また、データーベースのアクセスができていることから、直に書き換えれば良いんじゃないかと思いはじめた。

データーベースを書き換える

先人が試したことを参考に
http://cartolare.blogspot.com/2011/03/redmine.html
https://qiita.com/is0me/items/2e3add5dbaab7c63b775
パスワードは、ユーザー毎に持っているsaltキーとSHA1で暗号化したパスワードを連結し、更にSHA1で暗号化する。
がポイント。
MariaDB [redmine]> select id,login,hashed_password,salt from users where id = '1';
+----+-------+------------------------------------------+------------+
| id | login | hashed_password                          | salt       |
+----+-------+------------------------------------------+------------+
|  1 | admin | pppppppp                                 | xxxxxxxxxx |
+----+-------+------------------------------------------+------------+
これのpppppppp部分を書き換える。
とりあえずadminをSHA1でハッシュすると[d033e22ae348aeb5660fc2140aec35850c4da997]となる。
これにsalt(xxxxxxxxxx)を加えて[xxxxxxxxxxd033e22ae348aeb5660fc2140aec35850c4da997]としてSHA1でハッシュすると[78af0b552fabb064d785ec2c38f8b43c4fc40b57]となる。
これをpppppppp部分に書き込んでおく。
update users set hashed_password="78af0b552fabb064d785ec2c38f8b43c4fc40b57" where id='1';
これで、redmineのログイン画面からadmin/adminで入れた。その後ちゃんとパスワード変更を行った。
めでたしめでたし。
それにしても、職場でプロジェクト管理・タスク管理を受け入れてもらうにはどうすれば良いんだろうか…
いつまでもエクセル管理じゃ、エクセル工数が半端ない。