這2天學習mongodb3.2.9,用戶設置好了,結果用C#查詢的時候報錯了,看字面意思是用戶驗證沒通過,但是我用shell是完全沒有問題的,后來網上搜了下,發現原來是我用的是舊驅動,舊驅動用的是舊的校驗方式,而mongodb3.2.9用的是新的SCRAM-SHA-1校驗方式,所以驗證就不通過了
我這邊由於軟件環境的問題還想繼續用舊驅動,那就需要在mongodb里把校驗方式給改下
首先,先關閉auth認證啟動服務
D:
cd D:\MongoDB\Server\3.2\bin
mongod --dbpath D:\mongodb\data
然后,修改system.version里authSchema的currentVersion為3,默認是5(沒有創建用戶的話version是null,隨便創建一個用戶version就出現了,這個時候創建的用戶的驗證方式是默認的5,所以到時候是要刪除的)
> use admin
switched to db admin
> var s= db.system.version.findOne({"_id" : "authSchema"})
> s.currentVersion = 3
3
> db.system.version.save(s)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
這個時候驗證方式就修改好了,然后再創建的用戶的驗證方式就變成3了
>use admin
>db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]})
最后,以auth啟動服務,就能用舊驅動驗證了
D:
cd D:\MongoDB\Server\3.2\bin
mongod --dbpath D:\mongodb\data -auth
cd D:\MongoDB\Server\3.2\bin
mongod --dbpath D:\mongodb\data -auth