与验证运行的MongoDB
-
19-09-2019 - |
题
我想弄清楚的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重启。
在安全部分已更新来描述这一点。