gpt4 book ai didi

mongodb - 如何向 mongodb 2.6 添加身份验证?

转载 作者:IT老高 更新时间:2023-10-28 13:05:20 27 4
gpt4 key购买 nike

我有一个在 ubuntu 上运行 mongodb 2.6 的测试服务器。我的macbook上正在运行相同的版本。在这两台机器上,我使用标准升级机制从 mongodb 2.4 升级。现在我需要设置基于用户名和密码的身份验证

在我的 Mac 上,我使用 brew update 将 mongodb 更新到了 2.6。我

我在我的 Mac 上尝试了以下命令

$mongo
>db.getSiblingDatabase('admin')
>db.createUser({user:"root", pwd:"mycomplexpassword", roles:[ "userAdminAnyDatabase", "readWrite" ] } )

我收到以下错误

Error: couldn't add user: User and role management commands require auth data to have schema version 3 but found 1 at src/mongo/shell/db.js:1004

因此我无法启用对 mongodb 的身份验证。如何解决问题?谷歌搜索错误似乎没有返回任何有用的信息。

PS:当我在我的服务器上向 mongodb 添加身份验证时,我是否应该预期会出现同样的问题?

最佳答案

mongodb 2.4 和 2.6 中 db.system.users 的 schema 不同导致创建新用户失败。

2.4 架构

db.system.users.find()
{
"_id" : ObjectId("53675bc48ff842a0657e25ff"),
"user" : "root",
"pwd" : "c2ff9601c8590812f0d40b9f60869679",
"roles" : [
"userAdminAnyDatabase",
"readWrite"
]
}

2.6 架构

db.system.users.find()
{
"_id" : "admin.root",
"user" : "root",
"db" : "admin",
"credentials" : {
"MONGODB-CR" : "c2ff9601c8590812f0d40b9f60869679"
},
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "readWrite",
"db" : "admin"
}
]
}

我没有找到转换它们的官方方法。因此,您可能需要手动将 db.system.users 中的 2.4 数据转换为 2.6 格式,或者在 2.4 中删除所有旧用户并在 2.6 中重新创建它们。

您可以使用以下命令进行升级。

db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 });

引用资料:

  1. Upgrade User Authorization Data to 2.6 Format
  2. Sobolev Eugene's answer

关于mongodb - 如何向 mongodb 2.6 添加身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23468137/

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