方案: Installed MongoDB 2.2.3(Windows 64位)
按照所有步骤在MongoDB服务器上强制执行身份验证。
将用户添加到管理数据库
use admin
db.addUser('me_admin', '12345');
db.auth('me_admin','12345');
使用--auth
选项启用数据库服务器(mongod.exe进程)
认证
关注类似问题的所有答案: How to secure MongoDB with username and password
问题:对于新版本2.2.3,我无法设置身份验证。按照相同的步骤后,我可以在同一台机器上为version 2.0.8设置身份验证。但是它在MongoDB文档的某处提到 " Authentication on Localhost在版本2.2之前和之后略有不同"
问题:有什么变化以及如何在新版本(即2.2以后)中强制执行身份验证。任何人都可以提出一些想法或解决方案来继续使用新的MongoDB 2.2.3吗?
<小时/> 的更新 当我在命令提示符下使用mongod.exe
参数启动--auth
进程时,我已经检查过2.2.3认证的认证是否相同。
我在配置文件中使用auth=true
参数,如docs中所述,但这不起作用。
完成研究:
当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
参数并在Windows7上运行mongod.exe
进程作为服务
答案 0 :(得分:1)
如您所引用的部分所述,此更改很小:
通常,如果admin数据库没有用户,您可以通过localhost接口连接。对于运行2.2版的分片集群,如果mongod与auth一起运行,那么通过localhost接口连接的所有用户都必须进行身份验证,即使admin数据库中没有任何用户也是如此。
基本上在2.2之前,如果您在分片群集中,则可以连接到localhost,如果在管理数据库中找不到用户,则不会强制进行身份验证。这意味着如果您设置分片群集,那么设置默认用户可能是明智之举。
任何人都可以提出一些想法或解决方案来继续使用新的MongoDB 2.2.3吗?
新的auth系统就在那里,你不需要做任何事情;它就是。
答案 1 :(得分:0)
找到解决方案。
要使用mongod.exe
作为服务运行MongoDB进程(auth=true
),在注册MongoDB服务时必须注意以下事项(docs中未提及)
必须使用以下命令注册服务:
C:\mongodb\bin\mongod.exe --config C:\mongodb\mongod.cfg --auth --install
mongod.cfg
文件只有logpath=c:\mongodb\log\mongo.log
与大家分享,以便付出努力&amp;时间不会再次出现在同一个问题上。
快乐探索所有..: - )
请注意,此时间日志包含:
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 28017