mongodb用户认证问题
背景:项目连接mongodb-分片集群出现写入数据时,报认证失败,目前mongodb的版本是3.6.2
1、 用户验证方式更改:
Mongodb2.6的默认用户验证方式是:MONGODB-CR
Mongodb3.0的默认用户验证方式是:SCRAM-SHA-1
因为新的验证方式在spring和java中还有一些问题,因此现在项目中3.0的数据库依旧使用之前的验证方式。
2.目前mongodb是分片集群并建立认证机制,目前需要将配置文件中认证keyFile文件注释掉,重启mongodb服务。
3.把3.0的用户验证改为MONGODB-CR,过程如下:
(1)分别对mongos、shard1主节点、shard2主节点、shard3主节点进行操作
(2)查看版本: db.system.version.find();
查看用户:db.system.users.find();
版本和用户截图
用户主要关注:credentials: SCRAM-SHA-1
版本主要关于: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)再次创建一个新的用户:
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();
新版本用户认证
用户主要关注:credentials: MonGODB-CR
版本主要关于:currentVersion=3
(7)修改配置文件中认证keyFile文件注释去掉,重启mongodb服务
(8)登录mongos、mongos、shard1主节点、shard2主节点、shard3主节点查看用户认证和版本。
用户主要关注:credentials: MonGODB-CR
版本主要关于:currentVersion=3
备注:
如果是新mongodb,在修改用户认证的话,需要先创建用户,之后再修改更改用户验证方式,再删除用户,最后再重新建用户,查看确认用户认证机制。