首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB提供了一个基本的身份验证系统。它在2.2.3版中有变化吗?

MongoDB提供了一个基本的身份验证系统。它在2.2.3版中有变化吗?
EN

Stack Overflow用户
提问于 2013-03-11 08:14:25
回答 2查看 1.8K关注 0票数 3

场景:机器上的 已安装 MongoDB 2.2.3 (Windows 64位)

遵循在MongoDB服务器上强制身份验证的所有步骤。

  1. 将用户添加到管理数据库 使用admin db.addUser('me_admin','12345');db.auth('me_admin','12345');
  2. 使用mongod.exe选项运行数据库服务器( --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参数,就像在文档中提到的那样,但是这是行不通的。

研究完成:

  1. 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上的连接。
  2. 当我从命令提示符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:中的变化

  1. options:{ config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true } //不工作
  2. 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进程。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-11 08:26:31

如你所引用的部分所述,这一变化只是很小的:

通常,如果管理数据库没有用户,您可以通过localhost接口进行连接。对于运行版本2.2的切分集群,如果mongod与auth一起运行,那么所有通过localhost接口连接的用户都必须进行身份验证,即使管理数据库中没有任何用户。

基本上,在2.2之前,如果您在一个切分的集群中,您可以连接到本地主机,如果管理数据库中没有用户,则不必强制使用。这意味着,如果您设置了一个切分群集,那么设置默认用户可能是明智的,因为您已经这样做了。

有人能给出一些想法或解决方案来处理新的MongoDB 2.2.3吗?

新的auth系统就在那里,你不需要做任何事情,它就会出现。

票数 1
EN

Stack Overflow用户

发布于 2013-03-11 10:28:06

找到了解决办法。

要将MongoDB进程(mongod.exe)作为auth=true服务运行,在注册MongoDB服务本身时必须注意以下事项(在文档中没有提到)

服务必须通过以下命令注册:

代码语言:javascript
复制
C:\mongodb\bin\mongod.exe --config C:\mongodb\mongod.cfg --auth --install

mongod.cfg文件将只有logpath=c:\mongodb\log\mongo.log

与大家分享,这样努力和时间就不会再被放在同一个问题上了。

祝大家愉快..。:-)

注意:这个时间日志包含:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15333871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档