我想弄清楚的MongoDB,以评估其是否是我愿意承担未来的应用与否的路线。为了将它部署明智我的服务器上,我必须与(与--auth参数或与在配置文件auth = true即)启用验证运行它。

安装似乎相对straightfoward,我一直从文档必要的协助地方进行。特别是,部分做了解释的一个不错的工作,与AUTH运行的过程中启用,将您的第一个管理员用户。然而,事情并没有按计划进行。

运行的 AUTH生成结果人们希望对 - 它运行时,用下面的输出:

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或配置指令)产生如下的输出并且该过程立即退出:

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雪豹运行,它使用的是最新的1.3.x夜间OS X 64位二进制下载(我应该恢复到1.2稳定也许?)

任何想法是什么导致了这一点,我能做些什么来解决它?这不是我的本地机器上如此重要,但我需要它在安全模式下工作,使之切实用于任何生产使用的。


PS:如果这应该是ServerFault,而不是SO,随时把它搬到那里。我不知道这是环境最适合。


更新

我试图运行没有AUTH,添加用户和与AUTH重新运行所推荐的mdirolf和马蒂亚斯。然而,它仍然抛出了同样的错误。用户以下面的方式加入:

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

无AUTH和进入蒙戈壳后续运行证明用户实际上仍然存在。我做一些愚蠢的事?

有帮助吗?

解决方案

啊,看起来像您发现主人的错误。我创建了这一个案例: http://jira.mongodb.org/browse/SERVER -474

请尝试最近发布的MongoDB 1.2.0。 GIT中主站(1.3.x的分支)是的准备使用尚未。

其他提示

您需要开始--auth服务器之前已经在管理数据库的用户。我只是增加了一个纸条给文档提这所以没有人感到惊讶。

顺便说一下,大多数(如果不是全部)的生产的mongodb部署运行而不AUTH。我们建议在应用程序中处理身份验证和数据库服务器上配置防火墙,只允许从您的网络/应用服务器的连接。

您需要--auth开始前添加一个用户。启动时不--auth和添加用户,然后用--auth重启。

在安全部分已更新来描述这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top