场景:机器上的 已安装 MongoDB 2.2.3 (Windows 64位)
遵循在MongoDB服务器上强制身份验证的所有步骤。
--auth进程)以启用身份验证对类似问题的所有答案如下:如何使用用户名和密码保护MongoDB
问题:新版本2.2.3的无法设置身份验证。按照相同的步骤,我能够在同一台机器上为版本2.0.8设置身份验证。但是在"http://docs.mongodb.org/manual/tutorial/control-access-to-mongodb-with-authentication/#authentication-on-localhost文档中提到,MongoDB 在版本2.2"“之前和之后略有变化。
问题:更改是什么,以及如何在新版本(即2.2 )中强制执行身份验证。有人能给出一些想法或解决方案来处理新的MongoDB 2.2.3吗?
更新:当我从命令提示符用--auth参数启动mongod.exe进程时,我在2.2.3中检查了身份验证的工作原理。
我在配置文件中使用了auth=true参数,就像在文档中提到的那样,但是这是行不通的。
研究完成:
mongod.cfg文件包含以下配置时
logpath=c:\mongodb\log\mongo.log, auth=true, profile=2
log.txt文件包含以下日志
Mar / 11 15:06:35尝试启动windows服务' MongoDB‘Mon 15:06:35运行Mon / 11 15:06:35 MongoDB启动: pid=7152 port=27017 dbpath=\data\db\ 64位主机=AMOL/AMOL 15:06:35 initandlisten db version v2.2.3,pdfile版本4.5 Mon 11 :06:35 initandlisten版本: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08 Mon 11 15:06:35 info听构建信息: Windows sys.getwindowsversion(major=6,minor=1,build=7601,platform=2 )service_ Pack ='Service Pack 1‘( BOOST_LIB_VERSION=1_49 Mon Mar11 15:06:35 initandlisten选项:{ config:"C:\mongodb\mongod.cfg",日志路径:"c:\mongodb\log\mongo.log auth=true profile=2",service: true } Mon Mar11 15:06:35 present侦听日志dir=/data/db/journal Mon 11 15:06:35 initand试听恢复:没有日志文件存在,不需要恢复,3月11日15:06:35在端口27017上等待连接15:06:35 websvr管理web控制台等待端口28017上的连接。mongod --auth运行时,将显示以下日志:
听MongoDB开始: pid=6536 port=27017 dbpath=\data\db\ 64位主机=AMOL/ 11 15:09:40 initandlisten db version v2.2.3,pdfile版本4.5 Mon 11 :09:40 initandlisten聆听git版本: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08 Mon / 11 11 15:09:40 40 f570771a5d8a3846eb7586eaffcf4c2f4a96bf08 sys.getwindowsversion(major=6,minor=1,build=7601,platform=2,service_ Pack ='Service Pack 1‘( BOOST_LIB_VERSION=1_49 Mon Mar 11 15:09:40 waiting侦听选项:{ auth: true } Mon Mar 11 15:09:40 waiting侦听日志dir=/data/db/日记Mon 11 15:09:40侦听恢复:不存在日志文件,不需要恢复Mon 11 15:09:40 waiting侦听端口27017 Mon 11 :09:40上的连接,侦听端口27017 Mon 11:09:40 websvr web控制台等待端口28017的连接注:在options:中的变化
options:{ config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true } //不工作options: { auth: true } //Works有趣的观察到,
当它从配置文件中运行时。
logpath=c:\mongodb\log\mongo.log, auth=true, profile=2
改为:
logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true
我知道这里是问题。它应该是:
logpath: "c:\mongodb\log\mongo.log", auth=true, profile="2", service: true
因此,问题是如何从配置文件中传递auth=true参数,并在Windows7上作为服务运行mongod.exe进程。
发布于 2013-03-11 08:26:31
如你所引用的部分所述,这一变化只是很小的:
通常,如果管理数据库没有用户,您可以通过localhost接口进行连接。对于运行版本2.2的切分集群,如果mongod与auth一起运行,那么所有通过localhost接口连接的用户都必须进行身份验证,即使管理数据库中没有任何用户。
基本上,在2.2之前,如果您在一个切分的集群中,您可以连接到本地主机,如果管理数据库中没有用户,则不必强制使用。这意味着,如果您设置了一个切分群集,那么设置默认用户可能是明智的,因为您已经这样做了。
有人能给出一些想法或解决方案来处理新的MongoDB 2.2.3吗?
新的auth系统就在那里,你不需要做任何事情,它就会出现。
发布于 2013-03-11 10:28:06
找到了解决办法。
要将MongoDB进程(mongod.exe)作为auth=true服务运行,在注册MongoDB服务本身时必须注意以下事项(在文档中没有提到)
服务必须通过以下命令注册:
C:\mongodb\bin\mongod.exe --config C:\mongodb\mongod.cfg --auth --installmongod.cfg文件将只有logpath=c:\mongodb\log\mongo.log
与大家分享,这样努力和时间就不会再被放在同一个问题上了。
祝大家愉快..。:-)
注意:这个时间日志包含:
Mon Mar 11 15:58:06 Trying to start Windows service 'MongoDB'
Mon Mar 11 15:58:06 Service running
Mon Mar 11 15:58:06 [initandlisten] MongoDB starting : pid=6800 port=27017 dbpath=\data\db\ 64-bit host=AMOL-KULKARNI
Mon Mar 11 15:58:06 [initandlisten] db version v2.2.3, pdfile version 4.5
Mon Mar 11 15:58:06 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Mon Mar 11 15:58:06 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
Mon Mar 11 15:58:06 [initandlisten] options: { auth: true, config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log", service: true }
Mon Mar 11 15:58:06 [initandlisten] journal dir=/data/db/journal
Mon Mar 11 15:58:06 [initandlisten] recover : no journal files present, no recovery needed
Mon Mar 11 15:58:06 [initandlisten] waiting for connections on port 27017
Mon Mar 11 15:58:06 [websvr] admin web console waiting for connections on port 28017https://stackoverflow.com/questions/15333871
复制相似问题