【mongoDB】mongoDB批量修改业务账号密码

一、背景

1.需要将已有业务数据的复制集 replSet01 数据都导入到 新搭建的复制集replSet02 中

2.新搭建的复制集replSet02  超管用户密码跟源复制集replSet01 的密码都不一样

  1. 用新的复制集replSet02 的超管用户将原replSet01的数据导(admin库除外)入到 replSet02 ,不能导入admin库的原因是replSet02 的超管用户密码跟replSet01不同

  2. 将业务数据导入 replSet02后,用replSet02超管用户,将业务库中的用户全部删除,重新创建授权一遍,并验证

超管账号密码:  superUser/superPasswd

业务账号密码:  testUser/testPasswd

根据数据库权限最小化原则,复制集中的超管账号密码和业务账号密码应该不一样!

二、 脚本操作

删除用户重建

#!/bin/bash
 
dbs="
testDB01
testDB02
testDB03
testDB04
"
 
for db in  ${dbs}
 do
  echo ##### $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/bash
 
dbs='
testDB01
testDB02
testDB03
testDB04
'
 
 
for  db in  ${dbs}
 do
  echo ##### $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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值