久しぶりにRailsのプロジェクトを再構築しようとしたら、当時メモしたMongoDBのユーザー認証有効化コマンドdb.addUser
打つと下記のエラーが出来ました。
TypeError: db.addUser is not a function
調べて見たところ、認証の有効化は変わったようです。
この記事は基本的に下部参考の情報をかき集めてUbuntuで特化したものになります。
環境:
Ubuntu: 18.04.1 LTS
MongoDB: v3.6.3
管理者ユーザーの追加:
use admin db.createUser( { user: "任意の管理者ユーザー名", pwd: "管理者のパスワード", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] } )
一般ユーザーの追加:
use データベース名 db.createUser( { user: "任意の一般ユーザー名", pwd: "一般ユーザーのパスワード", roles: [ { role: "readWrite", db: "データベース名" } ] } )
※基本的には日本語をそれに応じたものに変えればコピペできるようになってます。
認証を有効化:
$ sudo vi /etc/mongodb.conf
22行あたりの#auth = trueのコメントアウトを外します:
auth = true
MongoDBを再起動します:
$ sudo service mongodb restart
認証の有効化は以上です。
以降ログインする場合は
use データベース名 db.auth("ユーザー名","パスワード"); #1が返ってきたら成功
でログインできます。
認証が有効にした後に一般ユーザー追加した場合、上記の一般ユーザー追加手順の前に、まず管理者としてログイン必要があります。
その場合は以下になります。
use admin db.auth("管理者名","管理者パスワード"); #1が返ってきたら続きは上記一般ユーザー追加手順
ちなみに、なぜ再構築のような面倒くさいことするかというと、2年前にDigitalOceanで作ったサーバー(そちらでは「Droplet」と言いますが)は512MBメモリ+20GBディスクで毎月$5でしたが、最近となっては同じ毎月$5で1Gメモリ+25GBディスクになっています。
うぅん〜あなたなら、どちら取ります?!^^;
はい、そこの「イメージ作れば簡単に移せるじゃん?」と思うあなた、天才です!
私自身がそう思ったのはこの記事を書いてるただ今です!
実際スナップショットとってみたら、スペックが違ってもちゃんとイメージからDroplet作れるようです。
#最後まで作ってませんが、「Create Droplet」で最新$5タイプを選択できるところまで確認しました。
僕がその発想なかったのは、「2年前そのサーバーにデプロイしたプロジェクトはこの2年間ずっとステージング環境で動かしたから、これを機にプロダクション環境で作り変えようと思ったから」という言い訳にしましょう!^^;
- Enable Auth #公式
- MongoDB の アクセス制御 (ユーザー認証) を 有効化する 方法 #Windows環境
- MongoDBのユーザ管理 #CentOS環境
- Ubuntu 16.04 LTS で MongoDB の認証を有効にする方法 #管理者ユーザーの追加紹介のみ