MongoDB については、今後のアプリケーションで採用したいルートであるかどうかを評価するために把握しようとしています。サーバーに適切にデプロイするには、認証を有効にして (つまり、--auth
引数またはauth = true
構成ファイルで) 実行する必要があります。
インストールは比較的簡単なようで、必要に応じてドキュメントの助けを借りて進めています。特に、セキュリティに関するセクションでは、認証を有効にして実行し、最初の管理者ユーザーを挿入するプロセスを説明しています。しかし、物事は計画通りに進んでいません。
認証なしで実行すると、期待どおりの結果が得られます-実行され、次の出力が表示されます。
Thu Dec 10 21:14:24 Mongo DB : starting : pid = 9350 port = 27017 dbpath = /var/mongodb_data master = 0 slave = 0 64-bit
Thu Dec 10 21:14:24 db version v1.3.0-, pdfile version 4.5
Thu Dec 10 21:14:24 git version: 32d56f6d81a98b569103149c9ffea9f25a1ece81
Thu Dec 10 21:14:24 sys info: Darwin erh2.10gen.cc 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_37
Thu Dec 10 21:14:24 waiting for connections on port 27017
ただし、認証を使用して (方法、arg または config ディレクティブを使用して) 実行すると、次の出力が生成され、プロセスはすぐに終了します。
Thu Dec 10 21:15:37 Mongo DB : starting : pid = 9361 port = 27017 dbpath = /var/mongodb_data master = 0 slave = 0 64-bit
Thu Dec 10 21:15:37 User Exception unauthorized
Thu Dec 10 21:15:37 local.system.namespaces Caught Assertion in runQuery ns:local.system.namespaces userassert:unauthorized
Thu Dec 10 21:15:37 ntoskip:0 ntoreturn:0
Thu Dec 10 21:15:37 query:{ name: /^local.temp./ }
Thu Dec 10 21:15:37 query local.system.namespaces ntoreturn:0 exception 0ms
Thu Dec 10 21:15:37 Dropping old temporary collection:
Thu Dec 10 21:15:37 User Exception no collection name
Thu Dec 10 21:15:37 exception in initAndListen std::exception: no collection name, terminating
Thu Dec 10 21:15:37 dbexit:
Thu Dec 10 21:15:37 shutdown: going to flush oplog...
Thu Dec 10 21:15:37 shutdown: going to close sockets...
Thu Dec 10 21:15:37 shutdown: waiting for fs...
Thu Dec 10 21:15:37 shutdown: closing all files...
Thu Dec 10 21:15:37 closeAllFiles() finished
Thu Dec 10 21:15:37 shutdown: removing fs lock...
Thu Dec 10 21:15:37 dbexit: really exiting now
ERROR: Client::shutdown not called!
タグに記載されているように、これは OS X Snow Leopard で実行されており、最新の 1.3.x ナイトリー OS X 64 ビット バイナリ ダウンロードを使用しています (おそらく 1.2 安定版に戻す必要がありますか?)
これを引き起こしている原因と、それを解決するために私にできることはありますか? 私のローカルマシンではそれほど重要ではありませんが、本番環境での使用に実用的にするには、セキュアモードで動作する必要があります.
PS: これが SO ではなく ServerFault にある必要がある場合は、そこに移動してください。どの環境が最適かはわかりませんでした。
アップデート:
mdirolfとMathiasが推奨するように、認証なしで実行し、ユーザーを追加して認証で再実行しようとしました。ただし、それでも同じエラーが発生します。ユーザーは次の方法で追加されました。
Mark@Destiny mongodb$ sudo bin/mongo
MongoDB shell version: 1.3.0-
url: test
connecting to: test
type "help" for help
> use admin
switched to db admin
> db.addUser("Mark", "my-password-went-here")
{ "user" : "Mark", "pwd" : "9934...be15da0" }
> db.system.users.find()
{ "_id" : ObjectId("4b216ed0be8a0b185767654e"), "user" : "Mark", "pwd" : "9934a190b...babe15da0" }
> exit
bye
その後、認証なしで実行し、mongo シェルに入ると、ユーザーが実際にまだそこにいることが証明されます。私は愚かなことをしていますか?