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

ymzxtsji  于 2023-08-04  发布在  Go
关注(0)|答案(5)|浏览(213)

我试图在本地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,如果这很重要。MongoDB 64-bit 3.2.7 with OpenSSL.

qc6wkl3g

qc6wkl3g1#

根据文档,传递给createUser的对象应该包含user属性(沿着其他属性):

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

字符串

owfi6suc

owfi6suc2#

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

owfi6suc

owfi6suc3#

如果有人带着错误消息来到这里,这可能会有所帮助:
MongoDB无法处理多个符号;

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

/\. "$*<>:|?

字符串
数据库名称也不能包含空字符。

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

/\. "$


https://docs.mongodb.com/manual/reference/limits/#Restrictions-on-Field-Names
我在mongoengine和pymongo上都遇到了“Authentication failed”错误。
请在包含符号时更改密码。

mgdq6dx1

mgdq6dx14#

根据我的经验,造成这种情况的原因是节点上的副本集密钥与它的对等节点不同。
复制集密钥通过配置参数security.keyFile设置

voase2hg

voase2hg5#

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

相关问题