无法在Mongo 3.6中以管理员用户身份登录

时间:2018-03-05 20:45:25

标签: javascript mongodb

我只是想在mongo 3.6中创建一个管理员用户并登录。我跑了:

 $mongo
db.createUser(
 {
   user:"AdminMark",
   pwd:"fghtyyy",
   roles:[{role:"root",db:"admin"}]
 }
)

它说:Successfully added user

然后尝试登录:

mongo -u AdminMark -p --authenticationDatabase admin

我输入密码。但我明白了:

 2018-03-05T20:40:07.689+0000 E QUERY    Error: 18 Authentication failed.
at DB._authOrThrow (src/mongo/shell/db.js:1271:32)
at (auth):6:8
at (auth):7:2 at src/mongo/shell/db.js:1271
exception: login failed

这种情况发生在本地和我的服务器上。发生了什么事?

我遵循这里的教程:https://tecadmin.net/create-drop-users-in-mongodb/#

我的mongod.conf文件的内容是:

    # 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: 127.0.0.1


    #processManagement:

    #security:

    #operationProfiling:

    #replication:

    #sharding:

    ## Enterprise-Only Options:

    #auditLog:

    #snmp:

我也试过this。没工作。

我可以非常简单地添加一个mongo 3.6管理员用户,然后登录到Mongo?

2 个答案:

答案 0 :(得分:2)

错误是由在默认数据库(test)中创建用户并使用admin数据库进行身份验证引起的。

如果在连接时未指定数据库名称,则mongo shell将默认为test数据库。

您缺少的是在创建用户之前切换到admin数据库。

这一系列命令应该有效:

$ mongo

> use admin

> db.createUser({
    user:'root',
    pwd:'hunter2',
    roles:[{role:'root',db:'admin'}]
})

$ mongo -u root -p --authenticationDatabase admin

正如之前@Kevin所说,你需要启用auth来告诉MongoDB强制执行身份验证。 如果您未启用身份验证,MongoDB将对您进行身份验证,但不会强制执行授权。这可以通过添加security部分或使用mongod部分使用配置文件来实现--auth参数。

有关MongoDB安全功能和最佳做法的更多详细信息,请参阅Security Checklist

答案 1 :(得分:0)

请检查您的mongod.conf文件并确保授权设置为已启用(在安全部分) 如果从服务器外部连接MongoDB,请同时从mongod.conf文件中删除bind ip(在net部分中)。 我希望它可以提供帮助。

这是我的设置

# network interfaces
net:
  port: 27017
  #  bindIp: 127.0.0.1

#processManagement:
security:
 authorization: enabled