はじめに
RocketChatでは管理者権限を持つユーザは設定画面からアプリ全体の設定を編集できます。
そんなadmin権限を持つユーザのログインパスワードが分からなくなった際にMongoDBからadmin権限を持つユーザを削除&再度admin権限を持つユーザを作成する手順を紹介します。
パスワードを忘れた場合も事前に登録したメールアドレスにてパスワード再設定ができたり、パスワードリセットがAPI経由で行える模様なので本手順はクリーンなものではないですが参考にしてみてください。
環境情報
- Rocket.Chat Version: 3.2.2
- MongoDB Version: 4.2.6
MongoDBからadminユーザを削除する
roketchatデータベースを選択して
rs0:PRIMARY> use rocketchat switched to db rocketchat
以下にてadminロールを持つユーザ情報が確認できます。
rs0:PRIMARY> db.users.find( { roles:'admin'}) { "_id" : "HYwMAZdWdx2aQxz6c", ... "services" : { "password" : { "bcrypt" : "$2b$10$TCuqcncg5Ex9GLmsvYVTBucoSyPRM8IqZ/o4Fd8LKrljl9VRqPw2m", "reset" : { "token" : "oZc4Ar8gZl8WVObhl8jDGB3zbR7MylzkSwgLFPlOzHJ", "email" : "mail@test.co.jp", "when" : ISODate("..."), "reason" : "enroll" } }, ..."type" : "user", "status" : "offline",..."roles" : [ "admin" ], "name" : "hoge"...}
ユーザ名は「hoge」でメールアドレスも記載されています。
この部分を編集できればパスワードを変更できるとは思うのですが今回はユーザ自体を以下コマンドで削除しました。
rs0:PRIMARY> db.users.remove( { roles:'admin'}) WriteResult({ "nRemoved" : 1 })
Rocket.Chatアプリから作成する
URLからサービスにアクセスするとログインorユーザ新規作成が選択可能です。
ここでユーザを新規作成するとadmin権限のユーザが削除されているからかここで作成するユーザにadminロールが付与されます。
要はadmin権限のユーザがいる状態で新規ユーザを作成すると
"roles" : [ "user" ]
になりますがいない状態では
"roles" : [ "admin" ]
となるようです。
終わりに
mongoDBにroot権限でアクセスできる状況であれば利用できる本手順ですが、本来はmongoDB上で完結してパスワード設定ができるはずです。
取り急ぎ再作成することで管理者権限を取得しましたが、もし別の手順にて実践された方がいればぜひコメント欄にお知らせください。