2014-11-03 3 views
1

Я провел большую часть своего дня, пытаясь добавить пользователя в mongodb 2.6.5. Я установил &, переустановил Mongo через macports.Ошибка при попытке добавить пользователя в mongodb 2.6.5

Try # 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 

Try # 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 

Я потратил много времени на поиск других вопросов и ответов. Кто-нибудь знает, как это исправить?

Спасибо в продвижении.

ответ

6

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() для получения дополнительной информации

Однако, прежде чем добавить проверку пользователя, если схема аутентификации существует, выполнив:

db.system.users.find() 

Если он ничего не возвращает, тогда вам нужно создать схему, выполнив:

db.system.users.insert({ 
    "roles" : [ "userAdmin", "dbAdmin"], 
    "userSource":"$external", 
    "user" : "dbadmin" 
}) 

Невозможно получить ошибку при добавлении пользователя после создания схемы.

Или, если вы обновили до версии MongoDb 2.6, то вам необходимо обновить схему аутентификации, выполнив:

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

Спасибо за ответ так быстро. Я новичок в монго и, возможно, вы можете увидеть что-то, что я делаю неправильно. Я опубликовал суть моего окна терминала: https://gist.github.com/rvirvo/622891629c946535b23f –

+0

Какие роли вы хотите назначить этому пользователю? –

+0

Я хотел бы назначить роль администратора или userAdmin. –