Herokuアドオンで使用しているMongoHQのデータベースパスワードを変更する

@kasumiiです。こんにちは。

HerokuのアドオンでMongoHQを使っているのですが、先日なにやらMongoHQからメールが来て「情報漏洩しちゃったからデータベースパスワードを変更してね!」と言われたので変更しました。そのときの手順メモです。

データベースのパスワードを変更している間、Herokuアプリにアクセスされたくない場合はメンテナンスモードにしておくと良さげ。ターミナルから、

heroku maintenance:on

で、簡単にメンテナンス状態にできるので便利!

メンテナンス中にHerokuアプリにアクセスすると以下のような画面が表示されます。(このメンテ画面は、Herokuの管理画面から別のページを表示するようにも変更可能です。)

Herokuのダッシュボードで、使用しているAdd-ons一覧のところからMongoHQの管理画面へ。

「Admin」→「Users」タブの画面で「Change Password」ボタンを押して新しいパスワードを登録しましょう。ここで登録したパスワードはあとで使うので忘れないように。ユーザを追加したあと画面に表示されるパスワードはハッシュ値であって、実際のパスワードとは違うので注意!

ターミナルで以下のコマンドを打って、Herokuの環境変数を表示します。

heroku config

その中の「MONGOHQ_URL」の値はこんな構成になっているので、パスワード部分を変更してあげる必要があります。

MONGOHQ_URL: mongodb://{username}:{password}@{host}:{port}/{dbname}

例えばパスワードが ABCD1234 だったら、以下のようにして環境変数を上書きすればOKです。

heroku config:add MONGOHQ_URL=mongodb://heroku:ABCD1234@dharma.mongohq.com:10096/app12345678

Herokuアプリのコード内で、この環境変数を使ってデータベース接続していればもう他に変更するところはありません。もしデータベース接続情報をハードコーディングしちゃってる場合はコードも変更しておきましょー。

最後に、メンテ中にしていたHerokuアプリを元に戻しておくのを忘れずに!

heroku maintenance:off

【参考】Resolving Heroku application Error : Failed to authenticate user ‘heroku’ on db – Mongo::AuthenticationError | TechThali