背景:
MongoDB 副本集admin(管理员)创建时,赋予了userAdminAnyDatabase权限,导致通过admin用户备份时,无权限,需要赋予root权限。
因此将admin用户删除后,无法再次创建admin权限,因此需要将副本集节点修改成单节点模式启动,创建admin用户后,再以副本集启动,加入副本集。
注意:完全可以先创建其他名字的管理员账号后再删除admin。
修改 MongoDB 副本集配置文件,将security和replication全部注释掉,单节点启动:(先修改两个slave节点,最后再修改主节点)
systemLog: destination: file logAppend: true path: /data/mongodb/27018/log/27018.log storage: dbPath: /data/mongodb/27018/data journal: enabled: true directoryPerDB: true engine: wiredTiger wiredTiger: engineConfig: cacheSizeGB: 20 directoryForIndexes: true collectionConfig: blockCompressor: snappy processManagement: fork: true pidFilePath: /data/mongodb/27018/pid/mongodb_27018.pid net: bindIp: 0.0.0.0 port: 27018 operationProfiling: mode: all slowOpThresholdMs: 200 rateLimit: 1000 #security: # authorization: enabled # clusterAuthMode: keyFile # keyFile: /data/mongodb/27018/keys/keyfile #replication: # replSetName: hankyoon # oplogSizeMB: 4096
登陆单节点模式,创建管理员账号:
# mongo --port 27018
> use admin
> db.auth('admin','hankyoon7777') Successfully added user: { "user" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ] }
修改完成后,通过rs.status()查看副本集状态,以及请研发同学配合验证一下业务运行情况