Setting up MongoDB with Authentication on Windows

Posted By : Akash Sharma | 02-Dec-2013

In this blog I am going to share the details of how to authenticate mongodb while logging to database in windows environment.

While demonstrating I will also show steps for mongodb setup that will be saving data in custom directory (e.g D:\ drive ) other than C:\data folder.If you already have setup of mongodb in custom directory structure then you can skip step 1 and step 2.

 

Step 1: Download mongodb

Download the latest production release of MongoDB from here

.

 

 

Note : Always download the correct version of MongoDB for your Windows system. The 64-bit versions of MongoDB will not work with 32-bit Windows.

Extract the archive to D:\ by right clicking on the archive and selecting Extract All and browsing to D:\ .

The folder name will be either:

D:\mongodb-win32-i386-[version]

or

D:\mongodb-win32-x86_64-[version]

In both examples, replace [version] with the version of MongoDB downloaded.

 

Step 2: Set up the Environment

Open a command prompt and issue the following command

move D:\mongodb-win32-* D:\mongodb

 

This will move the mongodb folder for bin directory in D:\ drive.

Add D:\mongodb\bin path to PATH environment variable.

 

Now issue following commands for creating necessary directory structure for mongodb:

md D:\mongodb\data
md D:\mongodb\data\db
md D:\mongodb\log

 

Issue following command for making configuration file:

echo logpath=D:\mongodb\log\mongo.log > D:\mongodb\mongod.cfg

 

Step 3: Mongodb custom configuration

In this step we will try to setup mongodb by our custom configurations.

By default data directory for mongodb is c:\data .Now we will be saving this data to d:\mongodb\data folder.

 

NOTE:

To make mongodb as authenticated login, we have to pass --auth parameter while installing its service.

Before installing a service with authentication, we have to create a user with required role that can easily login in authenticated development environment and do required operations.

For getting information about all the roles of a user follow this link

The two important roles for a user are userAdmin and userAdminAnyDatabase .

The userAdmin role is a database-specific privilege, and only grants a user the ability to administer users on a single database.

userAdminAnyDatabase provides users with the same access to user administration operations as userAdmin, except it applies to all logical databases in the MongoDB environment.

 

In this blog I have taken

database name = myDB

username = myUsername

password = myPassword

 

To add a user with a role of userAdminAnyDatabase , we will start mongodb instance as command tool.

Run following command with Administrator privilege:

D:\mongodb\bin\mongod.exe --journal --config D:\mongodb\mongod.cfg --dbpath D:\mongodb\data

 

Open another instance of command prompt and hit following commands:

mongo
>db = db.getSiblingDB('admin')
>db.addUser( { user: "myUsername",pwd: "myPassword",roles: [ "userAdminAnyDatabase" ] } )
>use myDB
switched to db myDB
>db.addUser("myUsername","myPassword")
{
       "_id" : ObjectId("51e39ba329e0772d7de869be"),
       "user" : "myUsername",
       "readOnly" : false,
       "pwd" : "60c55b23692da72cf223712b8bfd614f"
}
>

 

If everything goes well, close both instance of command prompt.

 

Step 4: Install mongodb service

Now we have to start mongodb service.For this we have to install mongodb service with --auth option.

Run following commands in cmd prompt with Administrator privileges:

D:\mongodb\bin\mongod.exe --journal --config D:\mongodb\mongod.cfg --dbpath D:\mongodb\data --auth --install
net start MongoDB

 

Close this cmd prompt and open a new one.Type following command to login in database:

mongo -u myUsername -p myPassword localhost/myDB

 

For more information on authenticated login follow this link

 

Thanks

Akash Sharma

About Author

Author Image
Akash Sharma

Akash is a bright Groovy and Grails developer and have worked on development of various SaaS applications using Grails technologies. Akash loves playing Cricket and Tennis

Request for Proposal