MongoDb在3.0之后添加了SCRAM-SHA-1,用戶驗證模式。添加的用戶,默認登錄協議也是這個。
在登陸的時候就要選擇使用這種方式登錄。有的gui客戶端的登錄驗證方式還是MONGODB-CR。因此會驗證失敗,錯誤日志信息:
Failed to authenticate user@db with mechanism MONGODB-CR: AuthenticationFailed: MONGODB-CR credentials missing in the user document
使用命令 db.system.users.find(),可以查看用戶的登錄驗證協議,如:
{ "_id" : "userdb.myuser", "user" : "myuser", "db" : "userdb", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "XXXXXXXXXXXXXXXXXXXXXXXX", "storedKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX", "serverKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX" } } , "roles" : [ { "role" : "dbOwner", "db" : "userdb" } ] }
在使用C# Driver操作mongo時,如果驅動版本小於1.10,就連接不上。必須要大於1.10版本,使用字符串方式,就可以連接了。
mongodb://user:pwd@127.0.0.1:2222/db
也可以修改,用戶的驗證協議,這種方式顯然是不推薦的,可參考:http://21jhf.iteye.com/blog/2216103。
C# Driver 1.10版本:http://files.cnblogs.com/files/zhaoyihao/CSharpDriver-1.10.1.zip