You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重置MongoDB 3.0.2分片集群的root管理员密码?

重置MongoDB 3.0.2分片集群Root密码的步骤

针对你的情况(拥有服务器root权限、低权限应用用户仍可正常访问、集群包含mongos、分片副本集和配置服务器副本集),我整理了一套安全且不影响应用的重置流程:

1. 先停止所有mongos路由节点

mongos是集群的入口,先停掉它避免在修改过程中出现路由异常。在每个mongos服务器上执行:

# 如果你用的是sysvinit(Debian老版本常见)
/etc/init.d/mongos stop

# 或者systemd(如果是较新的Debian)
systemctl stop mongos

2. 处理配置服务器副本集

配置服务器存储着集群的用户认证信息,这是修改root密码的核心环节:

  • 逐个修改配置服务器的配置文件(通常路径是/etc/mongod.conf,如果是自定义路径请调整):
    找到security段,将authorization设置为disabled:
    security:
      authorization: disabled
    

    注意:不要同时重启所有配置服务器,逐个操作保证副本集的可用性。

  • 重启当前配置服务器节点:
    /etc/init.d/mongod restart
    
  • 等所有配置服务器都修改并重启完成后,连接到配置副本集的主节点(可以通过mongo --host <config-primary-ip>:<port>连接,执行rs.status()确认主节点):
    use admin
    # 如果原root用户存在,更新密码
    db.updateUser("root", {pwd: "你的新Root密码"})
    # 如果原root用户不存在,创建新的root用户
    db.createUser({
      user: "root",
      pwd: "你的新Root密码",
      roles: ["root"]
    })
    

3. 处理每个分片的副本集

虽然集群用户信息存在配置服务器,但为了避免分片节点本地有残留的权限配置,建议同步更新每个分片主节点的root密码:

  • 同样逐个修改分片副本集节点的配置文件,将security.authorization设为disabled,重启节点:
    /etc/init.d/mongod restart
    
  • 连接到分片副本集的主节点,切换到admin库,执行和配置服务器相同的密码更新/创建命令:
    use admin
    db.updateUser("root", {pwd: "你的新Root密码"})
    # 或者创建(如果不存在)
    

4. 恢复所有节点的认证配置

完成密码修改后,把所有配置服务器和分片节点的配置文件改回:

security:
  authorization: enabled

然后逐个重启这些节点,确保认证模式恢复。

5. 重启mongos节点并验证

在每个mongos服务器上重启服务:

/etc/init.d/mongos start

然后用新密码连接mongos测试:

mongo --host <mongos-ip>:<port> -u root -p "你的新Root密码" --authenticationDatabase admin

连接成功后,执行show dbs、show collections等命令,确认权限正常。

注意:整个过程中应用的低权限用户不会受影响,因为我们只修改了root用户的密码,没有改动应用用户的权限或密码。

内容的提问来源于stack exchange,提问作者gl00ten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:17:17