RedmineのパスワードやログインIDを忘れた時の復旧方法

# RedmineのパスワードやログインIDを忘れた時の復旧方法

[Redmine Advent Calendar 2023](https://adventar.org/calendars/8974)の18日目の記事として作成しました。


* * *
## 背景

RedmineのIDとパスワードを忘れてしまい、Redmineにログインができなったことはありませんか？Redmineの管理者の方がいれば、パスワードを再発行してもらったり、ログインIDを調べてもらえば、RedmineのパスワードやログインIDを復旧させることができます。

しかし、自分がRedmineの管理者で、かつ、ログインIDとパスワードを忘れてしまったら、そのRedmineには管理者が不在になり、管理ができなくなります。

通常は非管理者権限でRedmineにログインをしていて、時々、Redmineに管理者権限でログインをするため、管理者権限のIDやパスワードを忘れてしまった時や、管理者アカウントの引き継ぎの時に、受領した情報を紛失するなどして、ログインIDとパスワードがわからずログインができなくなった場合の対処方法を説明します。

### 前提条件

Redmineがインストールされているサーバーにターミナルでアクセスできる必要があります。
なお、この方法は正規の認証方法を迂回させるため、セキュリティー的には問題があり得ます。筆者はいかなる責任もとりませんので、実行される場合は各自の責任のもとで行ってください。

### 対処方法

#### 1.  「rails c」を実行

ターミナルを開いて、Redmineがインストールされているパスで「rails c -e production」を実行します。
「rails c」の代わりに「rails console」でも構いません。

```ruby
  rails c -e production
```

<img width="100%" alt=" 「rails c」を実行" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633321/c654fa3c-33fb-a79c-b0cb-08559a2608ef.png">
＜ 「rails c」を実行＞

#### 2. ログインIDを全て表示させたい場合

RedmineのログインIDを忘れていて、ログインIDを見ればどれが自分のIDか思い出せそうな場合、まずはログインIDを全て出力してみます。下記のコマンドでログインIDを全て表示させることができます。ID一覧を確認して、自分のIDが思い出せて、パスワードもわかる場合はログインをしてください。

```ruby
User.all.each do |user|
 puts (user.login)
end

```

<img width="100%" alt=" ログインIDを全て表示" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633321/e227aff0-cb8c-4418-ba3a-9d7f5ef89931.png">
＜ ログインIDを全て表示＞

#### 3. ログインIDを「登録する」機能が有効の場合

Redmineの設定で、ログインIDを「登録する」機能を有効、非有効にすることができます。有効な場合、下図のように画面の右上の「登録する」をクリックすると、ログインIDを「登録する」することができます。本来Redmineのユーザーの追加はRedmineの管理者が行うものですが、ログインIDを「登録する」機能が有効の場合、管理者に代わって、匿名ユーザー（Redmineにログインをしていないユーザー）でもRedmineのユーザーの追加申請をすることができます。

<img width="100%" alt=" ログインID「登録する」機能" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633321/0e92f70f-e82d-29a9-ea92-c0715809d452.png">
＜ログインID「登録する」機能＞

ログインIDの登録が完了すると、下図のように、アカウントが作成されますが、システム管理者の承認がないと該当のユーザーはRedmineにログインすることができません。

<img width="100%" alt=" システム管理者の承認待ち状態" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633321/cee69d12-f440-430c-6431-5393f5d6e763.png">
＜システム管理者の承認待ち状態＞

今作成したアカウントの情報を下記のコマンドを実行して確認します。

```ruby
User.where(login: "tuika")
```

すると、下図のように、「status」が「２」であることがわかります。「status」が「２」は承認待ちの状態で、「status」が「1」になると承認済みの状態になります。

<img width="100%" alt=" システム管理者の承認待ち状態" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633321/69f8322d-f7b5-449a-4228-ffff391edc28.png">
＜システム管理者の承認待ち状態＞

下図のコマンドで、「tuika」というユーザーのstatusを１に変更します。この処理でシステム管理者の承認が降りたことになります。

```ruby
 User.where(login: "tuika").update(status: 1)
```

<img width="100%" alt=" ステータスの変更" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633321/13f7433b-0bc8-5438-d47a-0bdcc86740cb.png">
＜ステータスの変更＞

これで、ログインID「登録する」機能で作成したIDとパスワードでRedmineにログインができました。

<img width="100%" alt=" ログイン成功" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633321/95ed063e-25de-8cc0-012f-121f39db4767.png">
＜ログイン成功＞

#### 4. 管理者権限のログインID、パスワードを忘れた場合

上記の「3.」の方法で、まずは一般ログインIDを作成します。
その後、下記のコマンドで該当の一般ログインIDを管理者権限にします。

```ruby
 User.where(login: "tuika").update(admin: true)
```

<img width="100%" alt=" 管理者権限を付与" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633321/94d5eba7-3149-c417-74c4-d30ef19b9058.png">
＜管理者権限を付与＞

該当のユーザーでRedmineにログインをすると、以前は無かった「管理者」というメニューが表示されます。これによりRedmineの管理者になれましたので、ブラウザ上で、管理者としての対応をすることができますので、これ以降の処理はrails consoleを使う必要はありません。

<img width="100%" alt=" 「管理者」メニューの表示" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3633321/ada3f9c6-dbf1-7e7b-8708-a790740d7bf0.png">
＜「管理者」メニューの表示＞




* * *
### 感想


* Redmineの管理者のIDとパスワードを忘れるということは、あまり無いことですが、もしそのような事態に直面した場合の情報です。
* 備えあれば憂なしと言いますので、誰かの助けになれば幸いです。

* * *
#### この記事の作成者の紹介
* * *
山崎進
* Redmine、Jquery、JavaScript,Rails、Ruby、SQL、VBA、RPAの開発を行なっています。
* 自動化、業務の効率化に高い関心があります。
* 下記の媒体で情報を発信しています。Redmineのプラグインの開発などに対応が可能ですので、お気軽にご連絡ください。

　* Qiita：https://qiita.com/ankosoft
　* Twitter：https://twitter.com/yamasaki24
　* Redmine Advent Calendarで記事投稿
　* redmine.tokyoで講演多数
　* Redmine Japan Vol.1 前夜祭、Redmine Japan Vol.3で講演
　* https://ankosoft.co.jp/blog/
　* https://technology.ankosoft.co.jp/

* * *
### 関連記事

 *　[JqueryでRedmineのメニューにアイコンを入れる方法](https://qiita.com/yam_asaki/items/32097598cb0a653dd916)

 *　[JqueryでRedmineのメニューを閉じたり開いたりする方法](https://qiita.com/yam_asaki/items/5ac4a1127beeed53059c)

　*　[JqueryでRedmineの「活動ページ」をもっと便利に(タイトルを開閉したり、曜日を入れたり)](https://qiita.com/yam_asaki/items/718513b52b30b30f65bc)

　*　[JqueryでRedmineの「活動ページ」をもっと便利に②(フィルタリング機能と移動機能)](https://qiita.com/yam_asaki/items/2428610fd89bc73ce0ab)

　*　[JqueryでRedmineの「wikiページ」をもっと便利に(フィルタリング機能と移動機能)](https://qiita.com/yam_asaki/items/a6a32c45dbbc72a28836)

　*　[JqueryでRedmineの「チケットページ」をもっと便利に(年ごと、月ごと、四半期ごとの集計機能の開発)](https://qiita.com/yam_asaki/items/176d07588793b3e66b5d)

　*　[RedmineのパスワードやログインIDを忘れた時の復旧方法](https://qiita.com/yam_asaki/items/6881c92b30dc85f589ad)

　*　[「rails console」を使ってRedmine上のスケジュールを一括変更する方法](https://qiita.com/yam_asaki/items/1d41dc8653773f3522e6)


追記

現在Redmineにログインをしているユーザーが居るかどうかを確認するために、下記の方法で発行済のtokenを取得して確認できます。サーバーを再起動させる時に有効なtokenがあるかを確認をして、tokenがなければサーバーを再起動してもチケットを作成中のデーターが途中で消えてしまうことを防止できます。

```ruby
Token.all.each do |token|
 puts (token.user_id)
 puts (token.created_on)
end
```