如何在Mongodb中重置root密码?

vcirk6k6  于 2023-10-16  发布在  Go
关注(0)|答案(5)|浏览(233)

我有一个mongodb分片集群,有mongo机器,mongo节点在复制集中和配置服务器。MongoDB版本3.02
建立这个的家伙离开了公司一段时间前,现在我不能做简单的事情,如显示dbs显示收藏
我在所有这些Debian机器上都有操作系统root,所以我想知道如何重置mongo的root密码,这样我就可以管理数据库了。
访问此数据库的应用程序似乎工作正常,使用具有低权限的用户。我知道这个用户的密码。
这是一个生产设置,所以我不能保持它下来超过几秒钟,最多几分钟。

s5a0g9ez

s5a0g9ez1#

这取决于用户的类型。例如,如果您使用 SCRAM,重置密码的基本步骤如下:

  • 停止mongod节点
  • 在mongod.conf中禁用授权
  • 重新启动已设置的节点
  • 使用mongo shell连接到副本集主节点
  • 通过db.changePassword重置您的密码
yyhrrdl8

yyhrrdl82#

我想这可能行得通:
1.停止MongoDB示例
1.从MongoDB配置中删除--auth和/或--keyfile选项以禁用身份验证
1.启动示例而不进行身份验证
1.根据需要编辑用户
1.在启用身份验证的情况下重启示例
https://dba.stackexchange.com/questions/62976/how-can-i-enter-mongo-as-a-superuser-or-reset-users

8tntrjer

8tntrjer3#

这可能不是完美的答案,因为我无法测试它。基本问题当然是,,你不能把你的系统进入维护模式,在那里你可以改变管理员密码.但是有一个配置文件参数security.transitionToAuth,你可以用滚动的东西添加到你的配置文件中。
运行security.transitionToAuth的mongod或mongos不会强制执行用户访问控制。用户可以连接到您的部署而无需任何访问控制检查,并执行读、写和管理操作。

3b6akqbq

3b6akqbq4#

这里有两个选择

如果您计划升级到3.4,则可以在不停机的情况下完成

  • MongoDB 3.4允许Enforce Keyfile Access Control in a Replica Set without Downtime
  • 您需要使用--transitionToAuth启动所有成员(这将在一段时间内允许身份验证和非身份验证流量)
  • 登录到主服务器上的mongo shell并创建一个userAdmin
  • 注销并使用userAdmin再次登录
  • 创建rootAdmin
  • 在密码管理器中存储密码
  • 禁用transitionToAuth(仅允许经过验证的流量到达副本集)
    如果您需要在现有MongoDB上执行此操作,而无需升级:
  • 以滚动的方式停止副本集中的一个次副本。使用keyFile选项禁用身份验证
  • 逐步减少主服务器并更新其配置以禁用身份验证。
  • 更新您的应用程序,从应用程序配置中删除用户名和密码
  • 重启应用
  • 在管理数据库中创建useradmin和rootAdmin
  • 在密码管理器中保存密码
  • 在副本集中启用身份验证
  • 使用包含用户名和密码的旧配置启动应用程序
fhg3lkii

fhg3lkii5#

步骤

1.连接到托管MongoDB示例的计算机
1.使用以下命令打开/etc/文件夹中的MongoDB配置文件:sudo nano mongod.conf
1.注解掉下面的代码:

# security:
#   authorization: enabled

1.停止MongoDB服务:sudo service mongod stop
1.启动MongoDB服务:sudo service mongod start
1.使用Robo3T或同等产品连接到数据库。通过连接到admin集合,创建一个新的admin超级用户:

db.createUser({ user:"admin", pwd:"password", roles:[{role:"root", db:"admin"}] });

1.返回并取消注解步骤3中的行。然后重复步骤4和5。
1.现在,您应该能够使用在步骤6中创建的新用户进行身份验证,并拥有对数据库的完全访问权限。

故障排除

  • 如果由于某种原因,在尝试重新启动mongo服务后,您无法连接到它,您可以确保服务正确启动:systemctl --type=service --state=active。如果它已经启动,它将作为mongod.service出现在列表中。
  • Mongo日志也可以在/var/log/mongodb/mongodb.log上找到,但在这种情况下不太可能有帮助。

相关问题