fir3net
PPS-Firenetbanner-780.5x190-30-03-17

How to Enable Authentication and Create DB Users in MongoDB

By default authentication is not enabled within Mongo.  In this article we will show you how to enable authentication , create an account for global mongo administration and also create an account for database level authentication.

Create UserAdmin

First of all we go into the mongo shell and create our admin user.

use admin
db.createUser(
  {
    user: "admin",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
)
exit;

Enable Auth

Next we enable authentication via the use of the --auth  switch.

mongo --auth --config /etc/mongo.conf

You can use the following command to check to see that auth is enabled db.getUsers()

> db.getUsers()
2016-10-24T12:35:16.962+0100 Error: not authorized on test to execute command { usersInfo: 1.0 } at src/mongo/shell/db.js:1363

Create DB Users

Finally lets create another user and assign it to a single database.

db.auth('admin','password')
use example db.createUser( { user: "example", pwd: "password", roles: [ { role: "readWrite", db: "example" } ] } )

Django

 In order to connect to Mongo with your new user you must first install pymongo,

pip install pymongo==2.8.1

Next add the following is added to your settings.py

import mongoengine

_MONGODB_USER = 'example' _MONGODB_PASSWD = 'password' _MONGODB_HOST = '127.0.0.1' _MONGODB_NAME = 'example' mongoengine.connect(_MONGODB_NAME, host='mongodb://%s:%s@%s:27017/%s' % (_MONGODB_USER, _MONGODB_PASSWD, _MONGODB_HOST, _MONGODB_NAME))

Tags: Django, Database, Mongo, noSQL, PyMongo

About the Author

RDonato

R Donato

Rick Donato is the Founder and Chief Editor of Fir3net.com. He currently works as a Principal Network Security Engineer and has a keen interest in automation and the cloud.

You can find Rick on Twitter @f3lix001