无法在启用身份验证的情况下连接到MongoDB

时间:2015-10-22 17:58:23

标签: mongodb authentication database

我正在为Ubuntu 14.04运行最新的MongoDB

  • 我创建了一个名为“admin”的用户,其中包含“userAdminAnyDatabase”角色
  • 我可以在本地和外部访问数据库
  • 我可以使用带有SHA-SCRAM-1的“admin”登录

当我编辑配置文件以限制访问时,只有身份验证才会出错。会发生什么:

  1. 我在配置文件中取消注释“#auth = true”。
  2. 我无法使用“admin”帐户的正确凭据进行访问。
  3. 请记住,我在更改后会使用“service mongod restart”。

    配置文件以供参考:

    # mongod.conf
    
    # for documentation of all options, see:
    #   http://docs.mongodb.org/manual/reference/configuration-options/
    
    # Where and how to store data.
    storage:
      dbPath: /var/lib/mongodb
      journal:
        enabled: true
    #  engine:
    #  mmapv1:
    #  wiredTiger:
    
    # where to write logging data.
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    
    # network interfaces
    net:
      port: 27017
      bindIp: 0.0.0.0
    
    
    #processManagement:
    
    #security:
    #auth = true
    #operationProfiling:
    
    #replication:
    
    #sharding:
    
    ## Enterprise-Only Options:
    
    #auditLog:
    #snmp:
    

    数据库快照供参考:

    Database

    出了什么问题?

2 个答案:

答案 0 :(得分:7)

我认为auth = true是一个无效的配置,因为它你的mongod没有启动。要启用authorization,请尝试使用以下代码:

security:
  authorization: enabled

然后,要连接到数据库,请确保您的客户端使用正确的authentication database and authentication mechanism。这可以通过以下命令使用命令行来完成:

mongo localhost -u admin -p myAdminPass --authenticationDatabase admin --authenticationMechanism SCRAM-SHA-1

答案 1 :(得分:2)

  1. 您是否按照Enable Client Access Control中的说明创建了用户并启用了身份验证?

  2. 当您尝试使用凭据访问mongoDB时,日志的输出是什么?

  3. 你有没有告诉mongoDB使用配置文件?尝试在PC上本地启动mongoDB mongoDB与mongod --config ../etc/mongod.conf一起运行,然后像以前一样尝试从Windows PC连接。