背景:某公司线上的一套MongoDB副本集,只知道一个应用库以及该库下对应的一个用户。除此以外,对这套集群一无所知,他们的需求是要拥有超级用户权限,方便以后管理。

我虽是一个小渣渣,但以前单位一个很照顾我的老大哥找我帮忙,上吧~虽然我也不怎么熟,但好歹搭建环境测试寻找一个解决方法还是很快的。于是就接下了。虽然我的方法不一定是最好的,摆出来,让大伙儿嘲笑一下吧!

环境:MongoDB v2.6.5
副本集、1主(21011端口)、1备(21012端口)、无仲裁
root用户没有......
admin用户没有......
这套环境说明啥?我关闭实例都得kill......

言归正传,要搞嘛,先备份,这个我研究了,有readWrite权限,你就能把已知的dump出来,先保住一部分数据再说。

思路大概是这样的:
停机是没得说了,kill也是必须的。因为我需要无认证登录,去寻找已存在的最高权限用户或者新增最高权限用户。
下面开始我的操作:
1、kill掉主节点

2、修改主节点配置文件,注释auth、replSet、keyfile

3、重启21011实例,到admin库下
db.system.users.find()
通过该命令查询整个环境都有哪些用户。
执行该命令后结果如下:
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "MONGODB-CR" : "6c99f422503cdd3df4618ee692a95414" }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
{ "_id" : "admin.root", "user" : "root", "db" : "admin", "credentials" : { "MONGODB-CR" : "cc8f69f8ac660f2edd5ddb6df02f45cf" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "aibot.aibot", "user" : "aibot", "db" : "aibot", "credentials" : { "MONGODB-CR" : "84d87445f04823af2701e8ef38796934" }, "roles" : [ { "role" : "readWrite", "db" : "aibot" } ] }

可能存在两种情况,根据自己的情况而定:
a、如果存在最高权限用户,如role为 userAdminAnyDatabaseroot,那么只需要对密码进行更改就好了。
更改密码:
db.changeUserPassword('admin','111111')
db.auth('admin','111111')
db.changeUserPassword('root','111111')
db.auth('root','111111')

b、如果不存最高权限用户,那么就在admin下添加这两个用户
新增用户admin和root
db.createUser({user:"admin",pwd:"111111",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
db.auth(‘admin’,’111111’)
db.createUser({user:"root",pwd:"111111",roles:[{role:"root",db:"admin"}]})
db.auth(‘root’,’111111’)

4、更改过密码或者新增完密码后,关闭21011实例,更改配置文件,打开auth、replSet、keyfile,再启懂21011实例

5、21011启动后可能会分为两种状态:
a、21011已经变为21012的secondary,这时候,kill掉21012,等待21011升为primary状态,再rs.remove掉21012节点。

b、21011启动就是primary状态,则直接rs.remove掉21012节点。

6、kill掉21012,删除21012对应的数据目录,再创建21012的数据目录,启动21012

7、登录21011,执行rs.add,把21012节点重新加入副本集,等待21012全量同步完数据,变为secondary状态。通过rs.status()查看副本集状态。

8、可以通过21011随便创建个集合插入一个文档进行主备同步的测试,发现21012同步成功后,删除即可。

以上这些步骤,就解决了这个用户权限的问题,如果在数据量巨大的情况下,备节点可能会同步很久,并且在此期间无法对外提供服务。

欢迎各位大神指证问题,或者将更好的方法分享给我,在此谢过!

转载于:https://blog.51cto.com/8370646/2122200

MongoDB副本集权限重置相关推荐

  1. 总结—什么妖引起的MongoDB副本集初始化失败?

    前言: 在之前搭建MongoDB集群中,遇到过一些小问题作妖引起的初始化副本集失败,初学至今踩过来的坑,在此做个小结. 1.IP错误引起MongoDB副本集初始化失败 这个错误在另一篇文章已经描述过, ...

  2. MongoDB副本集(Replica Sets)搭建教程

    MongoDB副本集(Replica Sets)搭建教程 最近在生产环境下部署公司项目.由于项目中有使用到MongoDB,所以参考网上的博客,在服务器上进行搭建MongoDB副本集.今天打算将其记录成 ...

  3. MongoDB副本集详解与搭建

    1. 简介 MongoDB中的副本集(Replica Set)是一组维护相同数据集的mongod服务. 副本集可提供冗余和高可用性,是所有生产部署的基础.也可以说,副本集类似于有自动故障恢复功能的主从 ...

  4. MongoDB副本集的部署与操作

    一.实验综述 1.实验目的及要求 (1)了解MongoDB副本集 (2)熟悉MongoDB副本集成员 (3)掌握MongoDB副本集部署 (4)掌握MongoDB副本集操作 (5)理解副本集机制 实验 ...

  5. MongoDB - 副本集简介

    简介 在 MongoDB 中,副本集指的是一组 MongoDB 服务器实例掌管同一个数据集,实例可以在不同的机器上. 其中一个用于处理写操作的是主节点(Primary),还有多个用于保存主节点的数据副 ...

  6. MongoDB副本集搭建(超级详细)

    MongoDB 副本集原理 什么是复制 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性 复制还允许从硬件故障和服务中断中恢复数据 为什么要复制 数据 ...

  7. MongoDB 副本集之入门篇

    前言:mongodb 因为高性能.高可用性.支持分片等特性,作为非关系型数据库被大家广泛使用.其高可用性主要是体现在 mongodb 的副本集上面(可以简单理解为一主多从的集群),本篇文章主要从副本集 ...

  8. MongoDB副本集搭建及在springboot中使用

    MongoDB副本集搭建及在springboot中使用 一.mongoDB副本集的搭建 原则就是一台master(主),一台salve(从),一台arbiter(仲裁) 1.下载mongoDB htt ...

  9. DockerCompose MongoDB 副本集(集群) (客户端验证密码 - 集群内部使用mongodbKeyfile验证 ) 部署

    本部署MongoDB副本集是没有用其他的配置什么的(例如: mongodb-compass).是最简单的一个 我是为了mongodb的事务才配置的这个副本集,要使用mongodb的事务必须要副本集. ...

最新文章

  1. 阿里巴巴直播防控中的实人认证技术
  2. python比c语言好学吗-python和c语言哪个更适合初学者
  3. jquery鼠标滑过展示图片时显示详情
  4. windows下使用salt安装软件
  5. SQL 结合CASE WHEN 实现二维统计
  6. EasyDarwin开源手机直播方案:EasyPusher手机直播推送,EasyDarwin流媒体服务器,EasyPlayer手机播放器...
  7. Anchor-free 目标检测之 ExtremeNet
  8. 《数据安全警示录》一书修订版出版
  9. win7时间同步出错的解决方法
  10. 初尝vue-element-admin
  11. 第四届vex机器人亚洲锦标赛_站在亚洲之巅丨上实剑桥国际高中吴霖哲同学斩获VEX机器人亚洲锦标赛金奖...
  12. Python OpenSSL 解析证书
  13. 使用ISA Server 2004限制BT下载
  14. 解决下载文件中文名称乱码问题
  15. fullCalendar日历,点击添加日程,点击删除日程
  16. MeeGo handset 1.1开发环境[5]:一个desktop小应用
  17. 1095: C语言程序设计教程(第三版)课后习题10.2
  18. WiFi开发|WiFi无线技术介绍
  19. 浙飞网站管理系统密码加密方式分析
  20. 《从祖先到算法—加速进化的人类文化》简评

热门文章

  1. poj 3624 Charm Bracelet (01背包)
  2. 轻松四步配置Oracle数据库监听
  3. innodb存储引擎监控
  4. Scala学习(六)练习
  5. 架构分享--微博架构的回顾
  6. linux下查看某软件是否已安装, ubuntu安装deb包
  7. October CMS - 快速入门 1 安装
  8. 正则表达式大全(汇总)
  9. Ionic Cordova实现软键盘的监听 以及操作大全
  10. Maven 国内镜像