【mongoDB】mongoDB批量修改业务账号密码
一、背景
1.需要将已有业务数据的复制集 replSet01 数据都导入到 新搭建的复制集replSet02 中
2.新搭建的复制集replSet02 超管用户密码跟源复制集replSet01 的密码都不一样
用新的复制集replSet02 的超管用户将原replSet01的数据导(admin库除外)入到 replSet02 ,不能导入admin库的原因是replSet02 的超管用户密码跟replSet01不同
将业务数据导入 replSet02后,用replSet02超管用户,将业务库中的用户全部删除,重新创建授权一遍,并验证
超管账号密码: superUser/superPasswd
业务账号密码: testUser/testPasswd
根据数据库权限最小化原则,复制集中的超管账号密码和业务账号密码应该不一样!
二、 脚本操作
删除用户重建
#!/bin/bashdbs="
testDB01
testDB02
testDB03
testDB04
"for db in ${dbs}doecho ##### $db ###### 删除各业务库中业务用户echo -e "use $db;\n db.dropUser('testUser')" | /path/to/bin/mongo --quiet --host=192.168.80.219 --port=27017 -u superUser -p 'superPasswd' --authenticationDatabase=admin# 重新创建各业务库用户,授权 echo -e "use $db;\n db.createUser({user:'testUser',pwd:'testPasswd',roles:[{role:'readWrite',db:'$db'},{role:'dbAdmin',db:'$db'},{role:'userAdmin',db:'$db'}]})" | /path/to/bin/mongo --quiet --host=192.168.80.219 --port=27017 -u superUser -p 'superPasswd' --authenticationDatabase=admin# 输出各业务库用户 echo -e "use $db;\n show users" | /path/to/bin/mongo --quiet --host=192.168.80.219 --port=27017 -u superUser -p 'superPasswd' --authenticationDatabase=admin# 验证业务库用户密码认证echo -e "use $db;\n db.auth('testUser','testPasswd')" | /path/to/bin/mongo --quiet --host=192.168.80.219 --port=27017 -u superUser -p 'superPasswd' --authenticationDatabase=admin
done
这种直接删除用户,重新创建的方式过于简单粗暴,对于授权复杂的用户可能就不太适用了
好的方式应该是,将原业务用户导入后,直接在新实例中修改密码,其他不变
修改用户密码
#!/bin/bashdbs='
testDB01
testDB02
testDB03
testDB04
'for db in ${dbs}doecho ##### $db ###### 用超管用户身份进入各自业务库,修改业务账号密码 echo -e "use $db;\n db.changeUserPassword('testUser','newPasswd'))" | /path/to/bin/mongo --quiet --host=192.168.80.219 --port=27017 -u superUser -p 'superPasswd' --authenticationDatabase=admin# 输出各业务库用户echo -e "use $db;\n show users" | /path/to/bin/mongo --quiet --host=192.168.80.219 --port=27017 -u superUser -p 'superPasswd' --authenticationDatabase=admin# 验证业务库用户密码认证 echo -e "use $db;\n db.auth('testUser','newPasswd')" | /path/to/bin/mongo --quiet --host=192.168.80.219 --port=27017 -u superUser -p 'superPasswd' --authenticationDatabase=admin
done
三、参考
json在线工具
https://www.sojson.com
【mongoDB】mongoDB批量修改业务账号密码相关推荐
- windows域控上批量修改域账号密码
目录 一.查询密码过期域账号信息 (一)根据OU组织架构查询密码过期账号 (二)查询域控所有密码过期账号 (三)导出dsquery查询的信息 二.批量修改过期域账号密码 (一)根据dsquery查询到 ...
- idea修改git账号密码
idea修改git账号密码 一.方法1 1.在Terminal中输入git config user.name获取当前的用户名 2.打开控制面板–>用户账户–>凭证管理器–>windo ...
- 批量修改linux服务器密码,Linux下批量修改服务器用户密码方法步骤
Linux下批量修改服务器用户密码方法步骤 密码快要过期.由于机器数量众多,因此采用批量修改密码的方式来进行处理. 下面是具体步骤: 1.配置ssh免key # ssh-keygen -t rsa - ...
- Windows批量修改服务器密码,expect批量修改linux服务器密码
expect批量修改linux服务器密码 内容精选 换一换 批量修改弹性云服务器信息.当前仅支持批量修改云服务器名称,一次最多可以修改1000台.PUT /v1/{project_id}/clouds ...
- JAVA修改AD账号密码
JAVA修改AD账号密码 今天正好做了这块,拿出来分享.以前在网上找到的都无法实现.代码内容不太规范,只是一个测试的用例 有什么问题可以联系我QQ:305493325. 一.生成JKS文件 1.下载A ...
- eclipse修改SVN账号密码
随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) from:http://www.cnblogs.com/liaidai/p/5070208.html ecli ...
- mongodb忘记了admin的账号密码
一开始的错误如下:发现创建一个db的username和pwd发现权限不够,就是使用admin来进行,结果发现admin的账号密码错误 Error:couldn't add user:command c ...
- 浪潮服务器修改ipmi账号密码,通过ipmitool批量修改服务器ipmi的syslog目标服务器IP地址与端口号...
因syslog服务器IP地址变更需要,我们可能需要去修改服务器的ipmi里面的syslog服务器,但是如果手动修改的话费事费力还容易出错.如果不使用厂商自己的批量工具我们可以尝试通过ipmitool工 ...
- Powershell管理系列(二十八)PowerShell操作之修改AD账号密码
-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 有一群友问,我有一个表格,里面有 ...
最新文章
- Android项目启动时短暂的黑屏白屏处理
- 学习MongoDB 二:MongoDB添加、删除、修改
- 【java下午茶系列】java三重奏之封装
- Win7备份的取消与磁盘空间恢复
- .net与mono的那些事
- linux可以打开浏览器嘛,Linux下怎样可以打开浏览器
- nlp中文文本摘要提取,快速提取文本主要意思
- python 文件分割 按大小_python处理分隔大文件
- typedef 深入剖析
- DataGirdView 常用操作
- javaweb 需要对表格建立实体类吗_如何采用java界面编程建立一个表格
- 少儿编程150讲轻松学Scratch(十一)-用Scratch算法给矩形工具填充颜色
- java ssh shell命令_java 通过ssh 执行命令
- ImportError: cannot import name ‘py_checkpoint_reader‘ from ‘tensorflow.pyth
- java 匿名内部类多态,下面这个简单的程序验证匿名内部类的多态属性,但出现错误。...
- linux qt 生成word报告_Qt 生成word、pdf文档
- 转载一篇JAVA面试题
- 情商高手比智商高手要可怕多了
- 制作自己的字体图标库
- Windows OpenGL 图像褐色