Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting an Error trying to add a user to mongodb 2.6.5

I have spent a majority of my day trying to add a user to mongodb 2.6.5. I installed & re-installed Mongo via macports.

Try #1 ( addUser(); ):

1. # switching to the admin user
   > use admin

2. # db.addUser("admin", "password");

When use the addUser(); I get this error:

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");

When use the createUser(); I get this error:

2014-11-03T15:25:38.243-0500 Error: couldn't add user: no such cmd: 0 at src/mongo/shell/db.js:1004

I have spent a lot of time looking up other people's questions and answers. Does anyone know how to fix this?

like image 515
Ryan Avatar asked Nov 03 '14 21:11

Ryan


1 Answers

createUser expect a document and not a string literal. for example:

db.createUser( { "user" : "accountAdmin01",
                 "pwd": "cleartext password",
                 "customData" : { employeeId: 12345 },
                 "roles" : [ { role: "clusterAdmin", db: "admin" },
                             { role: "readAnyDatabase", db: "admin" },
                             "readWrite"
                             ] },
               { w: "majority" , wtimeout: 5000 } )

Or

db.createUser(
   {
     user: "accountUser",
     pwd: "password",
     roles: [ "dbAdmin", "userAdmin" ]
   }
)

Refer db.createUser() for more information

However before you add the user check if the auth schema exists by executing:

db.system.users.find()

If it does not return anything then you need create the schema by executing:

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

You should not get error while adding the user once the schema is generated.

Or if you have upgraded to MongoDb 2.6 version, then you need to upgrade the auth schema by executing:

db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 })
like image 162
Amit Rai Sharma Avatar answered Oct 13 '22 10:10

Amit Rai Sharma