在mongo db4.x 中,或mongo db cluser中,如果admin密码忘记了,必须按下面的步骤来做。
思路为注释掉security认证部分,重启mongo server, 重建admin用户,再打开security,重启mongo server,就OK了
on master and slave mongo DB hosts,
1) vi /etc/mongod.conf
注释下面的内容
#security:
# clusterAuthMode: keyFile
# keyFile: /data/mongodb/key/repl_set.key
# authorization: enabled
然后重新启动 mongodb servers
2) systemctl restart mongod
on master host,
3) 连接到master上
mongo --host <master MongoDB IP>
MongoDB shell version v4.0.3
connecting to: mongodb://xxxx
Implicit session: session { "id" : UUID("08e62bd1-15e3-4230-bd70-4a1bf2808478") }
MongoDB server version: 4.0.3
bpmRepSet:PRIMARY>
4) 执行下面的操作去重新建立admin用户
use admin
db.system.users.find()
db.dropUser("admin")
db.system.users.remove({user:"admin"})
db.createUser({user:"admin",pwd:"yourpass",roles:["readWrite"]})
db.grantRolesToUser("admin",[{ role: "clusterAdmin", db: "admin" }]);
db.grantRolesToUser("admin",[{ role: "userAdminAnyDatabase", db: "admin" }]);
on master and slave mongo DB hosts,
5) vi /etc/mongod.conf
//打开下面的内容
security:
clusterAuthMode: keyFile
keyFile: /data/mongodb/key/repl_set.key
authorization: enabled
然后重新启动 mongodb servers
6) systemctl restart mongod
on master host,
7) 连接到master上
mongo --host <master MongoDB IP>
> use admin
> db.auth("admin","yourpass")
如果允许slave 读操作,则在slave上执行 rs.slaveOk(); 就OK