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

时间:2016-06-14 11:42:53

标签: mongodb

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

我按照“Installing on Windows”和“Enable Client Access Control”中列出的步骤进行了操作:

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" ] }
>

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

systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db
security:
    authorization: enabled

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

日志文件中的错误是: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。

4 个答案:

答案 0 :(得分:2)

作为per the documentation,传递给createUser的对象应包含user属性(以及其他属性):

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

答案 1 :(得分:0)

可能您正在尝试使用新的登录名和/或密码来重新创建数据库。因此,您需要排除“ / db”文件夹。数据库路径位于docker-compose.yml文件中。例如:“卷:-./db:/data/db”。

答案 2 :(得分:0)

如果有人带着错误消息来到这里,这可能会有所帮助:

MongoDB 无法处理多个符号;

<块引用>

Windows 数据库名称限制 对于在 Windows 上运行的 MongoDB 部署,数据库名称不能包含以下任何字符:

/\. "$*<>:|?

此外,数据库名称不能包含空字符。

Unix 和 Linux 系统的数据库名称限制 对于运行在 Unix 和 Linux 系统上的 MongoDB 部署,数据库名称不能包含以下任何字符:

/\. "$

https://docs.mongodb.com/manual/reference/limits/#Restrictions-on-Field-Names

我在使用 mongoengine 和 pymongo 时遇到了“身份验证失败”错误。

请在包含符号时​​更改密码。

答案 3 :(得分:-1)

我相信您在db.createUser上输入的password与在mongo控制台中提示Enter password时输入的内容不匹配。您可以尝试删除用户:db.dropUser('userName')并重新创建用户。确保记住正确的密码。