背景:項目連接mongodb-分片集群出現(xiàn)寫入數(shù)據(jù)時,報認(rèn)證失敗,目前mongodb的版本是3.6.2
1、? 用戶驗證方式更改:
Mongodb2.6的默認(rèn)用戶驗證方式是:MONGODB-CR
Mongodb3.0的默認(rèn)用戶驗證方式是:SCRAM-SHA-1
因為新的驗證方式在spring和java中還有一些問題,因此現(xiàn)在項目中3.0的數(shù)據(jù)庫依舊使用之前的驗證方式。
2.目前mongodb是分片集群并建立認(rèn)證機制,目前需要將配置文件中認(rèn)證keyFile文件注釋掉,重啟mongodb服務(wù)。
3.把3.0的用戶驗證改為MONGODB-CR,過程如下:
(1)分別對mongos、shard1主節(jié)點、shard2主節(jié)點、shard3主節(jié)點進(jìn)行操作
(2)查看版本:?db.system.version.find();
? ? ? ? ?查看用戶:db.system.users.find();

用戶主要關(guān)注:credentials: SCRAM-SHA-1
版本主要關(guān)于:currentVersion=5
(3)刪除root和educloud用戶
use admin
db.system.users.remove({user:"root"})
db.system.users.remove({user:"educloud"})
(4)更改用戶驗證方式:
? use admin
?var schema = db.system.version.findOne({"_id" : "authSchema"})
schema.currentVersion = 3
db.system.version.save(schema)
(5)再次創(chuàng)建一個新的用戶:
use amin
db.createUser({"user":"root","pwd":"root111","roles":["root"]})
use educloud
db.createUser({"user":"educloud","pwd":"educloud111","roles":["dbOwner"]})
(6)再次查看版本:?db.system.version.find();
? ? ? ? ?查看用戶:db.system.users.find();

用戶主要關(guān)注:credentials: MonGODB-CR
版本主要關(guān)于:currentVersion=3
(7)修改配置文件中認(rèn)證keyFile文件注釋去掉,重啟mongodb服務(wù)
(8)登錄mongos、mongos、shard1主節(jié)點、shard2主節(jié)點、shard3主節(jié)點查看用戶認(rèn)證和版本。
用戶主要關(guān)注:credentials: MonGODB-CR
版本主要關(guān)于:currentVersion=3
備注:
如果是新mongodb,在修改用戶認(rèn)證的話,需要先創(chuàng)建用戶,之后再修改更改用戶驗證方式,再刪除用戶,最后再重新建用戶,查看確認(rèn)用戶認(rèn)證機制。