前提
自分のRedmine環境ではMySQLを使用しています。なので、手順はMySQLに従います。
またそもそもどのテーブルの、なんて項目にパスワードが格納されているか、すら分からない状況からのスタートです。
なお、自分はこの方法でうまくいきましたが、いつでも同じようにうまくいくとは限りませんので。。
手順
"redmine admin password"とかでgoogleすると、sqliteでの同様の実績がありました。
でぃべろっぱーってへてむる: Redmineで管理者がパスワードを忘れた場合
http://devml.blogspot.com/2008/07/redmine.html
この情報から推測すると、
・Redmineのデータベースに"users"テーブルがあり、ユーザ関連の情報を管理している。
・"users"テーブルの"hashed_password"名のカラムに、sha1とかいう暗号(?)で40桁の16進数で暗号化されたパスワードが格納されている。
ということがわかります。
sha1 (Secure Hashed Algorithm1)
http://e-words.jp/w/SHA-1.html
mysqldumpを取得してから、参照と更新を進めます。
$ mysqldump redmine > exp_redminedb_20110307.sql -u root -p
Enter password:【MySQLのパスワード入力】
早速、自身のredmineデータベースを確認。
$ mysql -u root -p
Enter password:【MySQLのパスワード入力】
"redmine"データベースを使用。
mysql> use redmine
"users"テーブルの内容を参照(XXX・・・がsha1で計算された、新しく設定するパスワード文字列)
mysql> select hashed_password from users where id = '1';
+------------------------------------------+
| hashed_password |
+------------------------------------------+
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
+------------------------------------------+
1 row in set (0.02 sec)
id='1'というのは、全ユーザに対する通し番号"id"の1番目。
(最初に作った管理者ユーザは多分どんな場合もid="1"になるのかな、と)
ここの値を更新します。
パスワードのsha1計算は別途、以下のようなツールから計算。
フリーのsha1ハッシュ計算ツール
http://tools.fictionlife.com/sha1/
ハッシュ/チェックサム計算(MD5/CRC/SHA)
http://kujirahand.com/web-tools/Checksum.php?v=text
できれば、コマンドラインからできないものだろうか。
update users set hashed_password ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" where id = '1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
あとは実際Redmineのログイン画面からログインできれば検証できます。
普段Oracleを使う機会のが多いので知らなかったのですが、MySQLはデフォルトで自動コミットがついてるそうな。