我花了大部分时间尝试将用户添加到mongodb 2.6.5。我安装了&通过macports重新安装Mongo。
尝试#1(addUser();
):
1. # switching to the admin user
> use admin
2. # db.addUser("admin", "password");
使用addUser();
时出现此错误:
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
2014-11-03T15:19:16.193-0500 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
尝试#2(createUser();
):
1. # switching to the admin user
> use admin
2. # db.createUser("admin", "password");
使用createUser();
时出现此错误:
2014-11-03T15:25:38.243-0500 Error: couldn't add user: no such cmd: 0 at src/mongo/shell/db.js:1004
我花了很多时间查找其他人的问题和答案。有谁知道如何解决这个问题?
先谢谢。
答案 0 :(得分:9)
createUser期望文档而不是字符串文字。例如:
db.createUser( { "user" : "accountAdmin01",
"pwd": "cleartext password",
"customData" : { employeeId: 12345 },
"roles" : [ { role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
] },
{ w: "majority" , wtimeout: 5000 } )
或者
db.createUser(
{
user: "accountUser",
pwd: "password",
roles: [ "dbAdmin", "userAdmin" ]
}
)
有关详细信息,请参阅db.createUser()
但是,在添加用户之前,请执行以下命令检查auth架构是否存在:
db.system.users.find()
如果它没有返回任何内容,则需要通过执行以下命令来创建模式:
db.system.users.insert({
"roles" : [ "userAdmin", "dbAdmin"],
"userSource":"$external",
"user" : "dbadmin"
})
生成架构后添加用户时不应该出错。
或者,如果您已升级到MongoDb 2.6版本,则需要通过执行以下命令来升级auth架构:
db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 })