Wednesday, 20 April 2016

How to authenticate mongodb

About MongoDB, cross-platform document-oriented database. Classified as a NoSQL database, MongoDB eschews the traditional table-basedrelational database structure in favor of JSON-like documents with dynamic schemas (MongoDB calls the format BSON), making the integration of data in certain types of applications easier and faster.


Here I am going to explain how to apply user-name and password(authenticate) to mongoDB's database.


#1. Open shell command. Fire this command
command - mongo
output-
MongoDB shell version: 3.0.4
connecting to: test

#2. 
command - show dbs;
output- 
admin       0.078GB
local         0.078GB
auth_db    0.078GB

#3. 
command - use auth_db;
output- 
switched to auth_db

Here, we have selected auth_db Database for apply authentication.
#4. Fire query : 

db.createUser({user:"YOUR_USERNAME", pwd:"YOUR_PWD",roles:["readWrite","dbAdmin"]})

We have created User of database 'auth_db' 
You can set your user-name and password to above query.

#5. Make sure authentication is true. You can set authentication = true in mongod.conf file. 

Option 1: In mongod.conf, Remove comment and make it true.
auth=true; 

- restart mongoDB - sudo service mongod restart

Option 2 : command to run mongodb with auth true :- mongod -auth

#6. In database config file in Nodejs 

var mongoose = require('mongoose');
var uri = 'mongodb://localhost:27017/auth_db';
var options = {
 user: 'YOUR_USERNAME',
 pass: 'YOUR_PWD'
}
mongoose.connect(uri, options, function(err, result){
   console.log('err -->' + JSON.stringify(err));
});

Without user-name and password, would not able to perform operation with database.

If you don't want to use authentication to database just make auth=true is commented in mongod.conf file or start mongo without -auth i.e mongo

do not forgot restart mongodb.
--

You can drop comment for any questions or feedback. Will get back to you soon.