美文网首页
【mongoDB】mongoDB批量修改业务账号密码

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

作者: Bogon | 来源:发表于2022-09-10 00:05 被阅读0次

一、背景

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

相关文章

网友评论

      本文标题:【mongoDB】mongoDB批量修改业务账号密码

      本文链接:https://www.haomeiwen.com/subject/mqzanrtx.html