mongo3.03开启auth认证后,会有一些以前版本没有的问题,比如3.03以后mongodb加入了SCRAM-SHA-1校验方式。
前一日我发现测试新搭建的mongo开发连接不上,我用软件测试一下是不是因为ip限制原因造成的,然后并不是,但是我注意到有个认证选择,一个是SCRAM-SHA-1 一个是mongodb-cr。我才发现是不是因为认证的原因造成的,于是我查看了mongo3.03新版的信息发现是的,
> db.system.users.find()
{ "_id" : "xxx.xxx", "user" : "xxx", "db" : "xxx", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "Ixxxxxxxxxxxx", "storedKey" : "xxxxxxxxxxxxx", "serverKey" : "xxxxxxxxxxxxxxxx" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "xxxxxx" } ] }
关闭mongo
取消认证开启mongodb
> use admin
switched to db admin
> var schema = db.system.version.findOne({"_id" : "authSchema"})
> schema.currentVersion = 3
3
> db.system.version.save(schema)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
然后删除以前创建的用户
> use userdb
switched to db userdb
> db.dropUser("xxxxx")
true
再创建用户然后查看用户会显示
{ "_id" : "xxx.xxx", "user" : "xxx", "db" : "xxx", "credentials" : { "MONGODB-CR" : { "iterationCount" : 10000, "salt" : "Ixxxxxxxxxxxx", "storedKey" : "xxxxxxxxxxxxx", "serverKey" : "xxxxxxxxxxxxxxxx" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "xxxxxx" } ] }
重启mongodb就可以用了。