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

时间:2013-03-11 08:14:26

标签: mongodb security authentication database

机器上的

方案: Installed MongoDB 2.2.3(Windows 64位)

按照所有步骤在MongoDB服务器上强制执行身份验证。

  1. 将用户添加到管理数据库

    use admin
    db.addUser('me_admin', '12345');
    db.auth('me_admin','12345');
    
  2. 使用--auth选项启用数据库服务器(mongod.exe进程) 认证

  3. 关注类似问题的所有答案:   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中所述,但这不起作用。

    完成研究:

    1. 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
      
    2. 当我从命令提示符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
      
    3. 注意: options:

      中的更改
      1. options:{ config: "C:\mongodb\mongod.cfg", logpath: "c:\mongodb\log\mongo.log auth=true profile=2", service: true } //无效

      2. options: { auth: true } //作品

      3. 有趣要观察的是,

        从配置文件运行时。

        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进程作为服务

2 个答案:

答案 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