パスワード

Growiの管理者パスワードを手動で変更する

Akira Ueno
概要 Growiのログインパスワードを忘れてしまい、パスワードを変更しようとしたが自身が管理者だったためログインしてユーザのパスワードを変更することができない状況に陥った。 MongoDBに保存されているパスワードのハッシュ値を手動で書き換えることで解決した。 手順 環境変数PASSWORD_SEEDを確認 docker-composeを用いている場合はdocker-compse.ymlに書かれているので、その値を使う。 ここではchangemeとする。 設定したいパスワードを決める ここではpassword024とする。 パスワードのハッシュ値を計算する growiのコードを参考に計算する。 node > const hasher = crypto.createHash('sha256'); undefined > hasher.update('changeme' + 'password024'); // 'PASSWORD_SEEDの値' + '設定したいパスワード' Hash { _options: undefined, [Symbol(kHandle)]: BaseObject {}, [Symbol(kState)]: { [Symbol(kFinalized)]: false } } > hasher.digest('hex'); 'f2206eee5a5669a1028b4e4cf2c511056f6d5b576b7c05524b7750199bd64ce4' // パスワードのハッシュ値 MongoDBのパスワードのハッシュ値を書き換える growiデータベースのusersコレクションの当該ドキュメントを書き換える。 mongo growi > db.users.find({email: "[email protected]"}); // パスワードを変更したいユーザのメールアドレスを指定 { "_id" : ObjectId(...略 > db.users.update({email: "[email protected]"}, {$set: {password: "f2206eee5a5669a1028b4e4cf2c511056f6d5b576b7c05524b7750199bd64ce4"}}); // 変更する WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) updateの際に$setを指定しないと元のドキュメントのpassword以外のフィールドが全て削除されてしまうので注意。 docker-composeを用いている場合はdocker-compose exec mongo mongo growiとかでMongoDBへログイン出来るかと思う。