lightning mcqueen
lightning mcqueen

Reputation: 173

MongoDB 3.2 - creating a CRUD admin for a certain database

I'm trying to create a CRUD database administrator. From what I read from official documentation, there is a role readWrite, but I don't really got the process of creating an admin.

So I ran mongod without --auth and created a user with these parameters:

use myCustomDB

db.createUser({ user: "snoop", pwd:"stickyickyicky", roles:[{role:"readWrite", db:"myCustomDB"}] });

The command line answered Successfully added new user blah blah..

but when I authenticate it returns 1, which, I suppose is true. But when I run command for example db.peops.find() it gives me this Error: error: { "$err" : "not authorized for query on myCustomDB.peops", "co de" : 13 }

Upvotes: 0

Views: 463

Answers (1)

edencorbin
edencorbin

Reputation: 2929

It may be your find call. Try formatting like this:

 db.getCollection('peops').find({})

If that's not it, it might be your auth schema. This may not be the best method, but I thought I would share the steps I take to setup a super admin and database specific admin, and a read only user. The all caps should be replaced with corresponding credential / db name:

1.Change Mongo Security Method

            sudo service mongod start
            mongo
            use admin
            db.system.version.remove({})
            db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 })

2.Create Super Admin User

            use admin
            db.createUser( { user: "SUPERADMINUSER", pwd: "SUPERADMINPASS", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )

3.Create db Admin with read/write access

            use DATABASE
            db.createUser( { user: "DBADMIN", pwd: "DBPASSWORD", roles: [ { role: "userAdmin", db: "DATABASE" }, { role: "readWrite", db: "DATABASE" }] } )
            db.createUser( { user: "DBREADONLYUSER", pwd: "DBREADONLYPASS", roles: [ { role: "read", db: "DATABASE" }] } )

4.Edit mongod.config in /etc folder

            sudo service mongod stop
            in mongod.config edit so that auth = true is not commented out.

5. Restart mongo, security in place

            sudo service mongod start

***Troubleshooting: If you are running mongo 3.2 you can likely skip the db.system.version remove and insert commands, you may want/need to upgrade to SCRAM-SHA-1, if so run db.adminCommand({authSchemaUpgrade: 1}); set up users the same way as shown above, when editing your /etc/mongod.conf file instead of auth=true comment in security: and add authorization=true as follows:

security:
  authorization: enabled

Upvotes: 2

Related Questions