作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个在 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 });
引用资料:
关于mongodb - 如何向 mongodb 2.6 添加身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23468137/
我是一名优秀的程序员,十分优秀!