尝试将用户添加到mongodb 2.6.5时出错

时间:2014-11-03 21:36:56

标签: macos mongodb macports mongo-shell

我花了大部分时间尝试将用户添加到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

我花了很多时间查找其他人的问题和答案。有谁知道如何解决这个问题?

先谢谢。

1 个答案:

答案 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 })
相关问题