【mongoDB】mongoDB修改业务账号、超管账号密码通用脚

2024-03-14  本文已影响0人  Bogon

MongoDB的权限管理
mongodb的用户权限是跟着数据库走的,除了超级管理员外,其他管理员只能管理自己的库。

user 普通业务账号
oldPasswd 普通业务账号旧密码
newPasswd 普通业务账号新密码

superUser 超管用户
oldSuperPasswd 超管用户旧密码
newSuperPasswd 超管用户新密码

$ cat renew_mongo_passwd.sh

#!/bin/bash
  
# 获取该mongoDB实例所有库名(排除 local 、admin 库)
dbs=`echo -e "show dbs"  | mongo  --quiet  --host xx.xx.xx.xx --port 27017  -u superUser  -p 'oldSuperPasswd' --authenticationDatabase admin | awk '{print $1}'  | grep  -vwE "local|admin"`
 
# 手动确认一下所有库名,避免遗漏
echo $dbs | tr ' ' '\n'

for db in  ${dbs}
 do
  echo ##### $db #####

# 输出各业务库用户
  echo -e "use $db;\n show users" |  mongo  --quiet  --host xx.xx.xx.xx --port 27017  -u oldSuperUser  -p 'oldSuperPasswd' --authenticationDatabase admin
  
# 用超管用户身份进入各自业务库,修改业务账号密码 
  echo -e "use $db;\n db.changeUserPassword('user','newPasswd')" | mongo  --quiet  --host xx.xx.xx.xx --port 27017  -u superUser  -p 'oldSuperPasswd' --authenticationDatabase admin
     
# 验证业务库用户密码认证(所有业务库用户可以在admin库做认证验证登陆,切到对应库做认证)  
  echo -e "use $db;\n db.auth('user','newPasswd')" | mongo  --quiet  --host xx.xx.xx.xx --port 27017  -u superUser  -p 'oldSuperPasswd' --authenticationDatabase admin
done


# 用超管用户身份进入admin库,超管用户密码 
echo -e "use admin;\n db.changeUserPassword('superUser','newSuperPasswd')" | mongo  --quiet  --host xx.xx.xx.xx --port 27017  -u superUser  -p 'oldSuperPasswd' --authenticationDatabase admin

# 在admin库验证超管新密码
echo -e "use admin;\n db.auth('superUser','newSuperPasswd')" | mongo  --quiet  --host xx.xx.xx.xx --port 27017  -u superUser  -p 'newSuperPasswd' --authenticationDatabase admin
上一篇下一篇

猜你喜欢

热点阅读