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

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

作者: Bogon | 来源:发表于2022-09-23 23:45 被阅读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/kektortx.html