如何将默认身份验证方法从 SCRAM-SHA-1 更改回 MONGODB-CR

How to change default authentication method from SCRAM-SHA-1 back to MONGODB-CR

我刚从 2.4 升级到 mongodb 3.0,我在登录时遇到此错误:

 "Failed to authenticate thisuser@admin with mechanism MONGODB-CR:    AuthenticationFailed MONGODB-CR credentials missing in the user document"

我在 Whosebug 的其他地方找到了对此有技巧的人,但是我在哪里可以指定整个数据库使用 CR 作为方法?这不是全局设置吗?

我正在使用 pymongo,它有适合我的 CR 样式说明。

从多个来源阅读了相同的答案后,我找到了一个足够详细的分步解决方案,值得在这里分享。路径特定于 webfaction.com,但您可以明显调整端口和路径以适合自己。

1) 在不启用 --auth 的情况下启动 MongoDB 3.0,因此您可以更改其身份验证方式。

  • 来自 /webapps/mongo/bin/ 运行 ./mongod --dbpath $HOME/webapps/mongo/data --port 1400

  • SSH 以管理员身份登录 来自 /webapps/mongo/bin/ 运行 ./mongo localhost:1400/admin

2) 运行 mongodb 在管理数据库上的 SSH 中:

>
> var schema = db.system.version.findOne({"_id" : "authSchema"})
> schema.currentVersion = 3
> db.system.version.save(schema)
> exit

currentVersion = 3 将使默认的 MONGODB-CR,默认为 MongoDB 版本 2x。 3.0 版默认使用 SCRAM-SHA-1。

3) 在启用 --auth 的情况下重新启动 MongoDB。 来自 /webapps/mongo/bin 我会 运行 ./mongod --dbpath $HOME/webapps/mongo/data --setParameter authenticationMechanisms=MONGODB-CR --auth --port 1400

...如果我希望此服务保持活动状态,它将是: @reboot nohub nice <FULL PATH>/mongod --dbpath $HOME/webapps/mongo/data --setParameter authenticationMechanisms=MONGODB-CR --auth --port 1400

setParameter authenticationMechanisms=MONGODB-CR 可能是多余的或无意义的,但我暂时将其保留在那里。

现在,只要我的用户帐户与该数据库相关联,我就可以远程连接,使用 db.grantRolesToUser( "marc", [ {role: "readWrite", db:"fbc"}, {role: "dbOwner", db:"fbc"}] ) ... 管理数据库中的等等。