GitBucketはデータの保存先としてJava製のRDBであるH2データベースを使用しています。
GitBucketにログインするアカウントの情報もH2データベースで管理されているので、rootのパスワードが分からなくなった時などでも、データベースを直接操作することでパスワードをリセットすることができます。
先日そんなことがあったのでメモ。
GitBucketの停止
GitBucketが起動している間はH2データベースのファイルはロックされているため、まずGitBucketを停止します。
$ service gitbucket stop
H2データベースコンソールの起動
H2データベースに含まれているデータベースコンソールを起動します。
H2データベースのJARファイルはGitBucketのWARファイル中にあります。
$ java -cp 【gitbucket.warファイルを展開したディレクトリー】/WEB-INF/lib/h2-1.4.180.jar org.h2.tools.Shell -url jdbc:h2:【GitBucketのデータが保管されているディレクトリー】/data -user sa -password sa
パスワードのリセット
GitBucketのユーザー情報はACCOUNTテーブルで管理されており、パスワードはPASSWORDフィールドにSHA1ハッシュとして格納されています。新しいパスワードの文字列からSHA1ハッシュを生成し、PASSWORDフィールドを更新することでパスワードがリセットできます。
sql> UPDATE ACCOUNT SET PASSWORD='【SHA1ハッシュ】' WHERE USER_NAME='root';
GitBucketの再開
最後にGitBucketを再開するのを忘れずに。
$ service gitbucket start