gpt4 book ai didi

MongoDB - 备份和恢复用户和角色

转载 作者:行者123 更新时间:2023-12-04 15:50:36 31 4
gpt4 key购买 nike

在 Mongo 实例之间同步用户和角色的最佳实践是什么?

在同一台 Windows 机器上,我试图将管理数据库中的 MongoDB 用户和角色从一个 Mongo 实例复制到另一个实例。每个实例的身份验证都处于“开启”状态。我试过的 mongodump\mongorestore 或 mongoexport\mongoimport 的组合都没有用。使用 mongodump\restore,还原步骤显示:

假设转储目录中的用户来自 <= 2.4(授权版本 1) 失败:转储中的用户和角色集合具有与目标服务器不兼容的授权版本:无法将授权版本 1 的用户恢复到授权版本 5 的服务器

我发现没有命令行选项告诉它不要做这种愚蠢的事情。我安装了 Mongo 版本 4。

您会认为 --dumpDbUsersAndRoles 和 --restoreDbUsersAndRoles 会是对称的,但它们不是。

我能够运行这个,mongoexport -p 27017 -u admin --password please -d admin --collection system.roles --out myRoles.json

但是,当尝试 mongoimport 时

mongoimport -p 26017 -u admin --password please -d admin --collection "system.roles"--file myRoles.json

输出显示 验证设置时出错:集合名称无效:集合名称“system.roles”不允许以“system”开头。

最佳答案

入门

用户附加到数据库。理想情况下,您将特定于数据库的用户存储在相应的数据库中。所有“全局”用户都应该进入管理员。好的部分:副本集负责将这些用户同步到副本集的每个成员。

解决方案

话虽这么说,关于如何处理这个问题似乎很明显。对于最坏的情况,准备好 .js 会容易得多,它只是重新创建 3-4 个全局角色摆弄管理数据库中的 system.* 集合。这样做的好处是您还可以自动执行其他设置,例如 TSHTF 时的分片设置,并且您需要从头开始重建集群。

use admin;
db.createRole([...])
db.createRole([...])
// do other stuff, like sharding setup

Run it针对你的副本集的主节点或 mongos 实例(如果你有一个分片集群)使用

mongo daHost:27017/admin myjsfile.js

在设置机器之后但在启用身份验证之前。

另一种选择是使用 Ansible 来创建用户。

至于转储和恢复,您可能希望省略集合名称。

关于MongoDB - 备份和恢复用户和角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53966125/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com