これでは本番運用するにはちょっと・・・やっぱり最低限のユーザ認証は必要ですね。
もちろん MongoDB もユーザ認証に対応しているのですが、設定が少し面倒なので、簡単な設定の仕方をメモっておきます。
○MongoDBのインストール
rpm でのインストールを前提
設定ファイル /etc/mongodb.conf
デフォルトは、ユーザ認証無し、IPアドレス(127.0.0.1)でのアクセス制限あり
○管理用ユーザの登録
まず MongoDB の管理者の登録をします。
最初に管理者を登録しておかないと、設定変更した時にアクセス出来なくなってしまいますからね(試してみた、というか間違った経験あり(^^;)
管理者登録方法
$ mongodb
> use admin
> db.addUser("admin","password");
※もちろんユーザ名とパスワードはちゃんと設定しましょう。
○ユーザ認証ありで再起動
/etc/mongodb.conf を変更します。
auth = true # コメントアウトされているので有効にする
#bind_ip = 127.0.0.1 # ネットワークからアクセス出来るようにする場合はコメントアウトする
MongoDB を再起動することでユーザ認証がないとアクセス出来なくなります。
○管理者でログインしてみる。
$ mongo
> use admin
> db.auth("admin","password");
ちなみに、adminデータベースは管理者というよりも、デフォルトのユーザ認証に使われるデータベースです。ここでは管理者と書いたけど、実際はadminデータベースで認証した場合は何でも出来るってことで、特に管理者って権限があるわけではないようです。
追加
adminにユーザを作ってしまうと何でも出来てしまうので、アクセス制限したい場合は、データベース毎にユーザを作りましょう。
さらに、読み取り専用ユーザというものも作れて、書込む必要がないユーザにはこちらの方が便利かも
読み取り専用ユーザを作るには、trueを追加するだけ
> db.addUser("readonly","password", true);

