MongoDB客户端访问控制:SCRAM-SHA-1身份验证失败,storedKey不匹配

rus*_*tyx 6 mongodb

我正在尝试在本地Mongo安装上激活用户授权,但是身份验证仍然失败。可能是什么问题?我想念什么吗?

我按照“ 在Windows上安装 ”和“ 启用客户端访问控制 ”中概述的步骤进行操作:

1)添加了一个用户

>mongo admin
MongoDB shell version: 3.2.7
connecting to: admin
> db.createUser({createUser:"admin",pwd:"admin",roles:["root"]})
Successfully added user: { "createUser" : "admin", "roles" : [ "root" ] }
>
Run Code Online (Sandbox Code Playgroud)

2)在中启用了客户端访问控制mongod.cfg

systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db
security:
    authorization: enabled
Run Code Online (Sandbox Code Playgroud)

3)重新启动 mongod

4)现在使用“正确的”凭据(我刚刚指定的凭据)登录总是失败:

>mongo admin -u admin -p admin
MongoDB shell version: 3.2.7
connecting to: admin
2016-06-14T12:25:02.376+0200 E QUERY    [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20
@(auth):6:1
@(auth):1:2

exception: login failed
Run Code Online (Sandbox Code Playgroud)

日志文件中的错误是: SCRAM-SHA-1 authentication failed for admin on admin from client 127.0.0.1 ; AuthenticationFailed: SCRAM-SHA-1 authentication failed, storedKey mismatch

如果重要的话,平台是Windows 10 x64。具有OpenSSL的MongoDB 64位3.2.7。

rob*_*lep 5

根据文档,传递给的对象createUser应包含一个user属性(以及其他属性):

db.createUser({ user : "admin", pwd : "admin", roles : ["root"] })
                ^^^^ not `createUser`
Run Code Online (Sandbox Code Playgroud)

  • 没关系,问题在于密码中的“ $”字符。因此,当我从终端尝试时,应该将其转义;)。 (7认同)
  • 实际上我的密码中有一个“@”。尽管我试图逃避,但没有成功。相反,我更改了密码。 (2认同)