场景:在机器上 安装了 MongoDB 2.2.3(Windows 64 位)
按照所有步骤在 MongoDB 服务器上强制执行身份验证。
将用户添加到管理数据库
use admin db.addUser('me_admin', '12345'); db.auth('me_admin','12345');
--auth
使用启用身份验证的选项运行数据库服务器(mongod.exe 进程)
遵循类似问题的所有答案: 如何使用用户名和密码保护 MongoDB
问题:对于新版本 2.2.3,我无法设置身份验证。遵循相同的步骤后,我能够在同一台机器上设置2.0.8 版本的身份验证。但它在 MongoDB 文档中的某处提到“本地主机上的身份验证在2.2 版之前和之后略有不同”
问题:有什么变化以及如何在新版本(即 2.2 及更高版本)中强制执行身份验证。任何人都可以给出一些想法或解决方案来使用新的MongoDB 2.2.3进行相同的操作吗?
更新:当我使用命令提示符
mongod.exe
的参数启动进程
时,我已经检查了身份验证在 2.2.3 上是否相同。--auth
我在配置文件中使用了docsauth=true
中提到的参数,但这不起作用。
做过的研究:
当
mongod.cfg
文件包含以下配置时logpath=c:\mongodb\log\mongo.log, auth=true, profile=2
该
log.txt
文件包含以下日志Mon Mar 11 15:06:35 Trying to start Windows service 'MongoDB' Mon Mar 11 15:06:35 Service running Mon Mar 11 15:06:35 [initandlisten] MongoDB starting : pid=7152 port=27017 dbpath=\data\db\ 64-bit host=AMOL-KULKARNI Mon Mar 11 15:06:35 [initandlisten] db version v2.2.3, pdfile version 4.5 Mon Mar 11 15:06:35 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08 Mon Mar 11 15:06:35 [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:06:35 [initandlisten] options: { config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true } Mon Mar 11 15:06:35 [initandlisten] journal dir=/data/db/journal Mon Mar 11 15:06:35 [initandlisten] recover : no journal files present, no recovery needed Mon Mar 11 15:06:35 [initandlisten] waiting for connections on port 27017 Mon Mar 11 15:06:35 [websvr] admin web console waiting for connections on port 28017
当我从命令提示符运行时
mongod --auth
,将显示以下日志:Mon Mar 11 15:09:40 [initandlisten] MongoDB starting : pid=6536 port=27017 dbpath=\data\db\ 64-bit host=AMOL-KULKARNI Mon Mar 11 15:09:40 [initandlisten] db version v2.2.3, pdfile version 4.5 Mon Mar 11 15:09:40 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08 Mon Mar 11 15:09:40 [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:09:40 [initandlisten] options: { auth: true } Mon Mar 11 15:09:40 [initandlisten] journal dir=/data/db/journal Mon Mar 11 15:09:40 [initandlisten] recover : no journal files present, no recovery needed Mon Mar 11 15:09:40 [initandlisten] waiting for connections on port 27017 Mon Mar 11 15:09:40 [websvr] admin web console waiting for connections on port 28017
注:本次变更options:
options:{ config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true }
//不起作用options: { auth: true }
//作品
有趣的是,
当它从配置文件运行时。
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
从配置文件传递参数并mongod.exe
在 Windows7 上将进程作为服务运行