我在ubuntu上运行了一个运行mongodb 2.6的测试服务器.我的macbook上正在运行相同的版本.在这两台机器中,我使用标准升级机制从mongodb 2.4升级.现在我需要设置基于用户名和密码的身份验证
在我的Mac上,我使用brew更新将mongodb更新为2.6.一世
我在Mac上尝试了以下命令
$mongo
>db.getSiblingDatabase('admin')
>db.createUser({user:"root", pwd:"mycomplexpassword", roles:[ "userAdminAnyDatabase", "readWrite" ] } )
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
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
Run Code Online (Sandbox Code Playgroud)
因此我无法启用auth到mongodb.如何解决这个问题?谷歌搜索错误似乎没有返回任何有用的东西.
PS:我在服务器上向mongodb添加身份验证时是否应该出现同样的问题?
stu*_*udy 30
的模式db.system.users在MongoDB中2.4和2.6不同造成您无法创建新的用户.
2.4架构
db.system.users.find()
{
"_id" : ObjectId("53675bc48ff842a0657e25ff"),
"user" : "root",
"pwd" : "c2ff9601c8590812f0d40b9f60869679",
"roles" : [
"userAdminAnyDatabase",
"readWrite"
]
}
Run Code Online (Sandbox Code Playgroud)
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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我找不到正式的转换方法.因此,您可能需要db.system.users手动将2.4数据转换为2.6格式,或者删除2.4中的所有旧用户并在2.6中重新创建它们.
您可以使用以下命令进行升级.
db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 });
参考文献:
小智 24
在mongo控制台中尝试此命令
db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17271 次 |
| 最近记录: |