The default data directory for MongoDB is /data/db
This can be overridden by a dbpath option specified on the command line or in a configuration file.
If you install MongoDB via a package manager such as Homebrew or MacPorts these installs typically create a default data directory other than /data/db and set the dbpath in a configuration file.
You can check the dbpath by:
db.serverCmdLineOpts()
in your mongo shell
"storage" : {
"dbPath" : "/usr/local/var/mongodb"
},
The following procedure first adds a user administrator to a MongoDB instance running without access control and then enables access control.
1. Start MongoDB without access control.
$ mongod --port 27017 --dbpath /data/db1
2. Connect to the instance.
$ mongo --port 27017
3. Create the user administrator.
In the admin database, add a user with the userAdminAnyDatabase role. For example, the following creates the user myUserAdmin in the admin database:
Note: The database where you create the user (in this example, admin) is the user’s authentication database.
> db.createUser(
... {
... user: "abhilash",
... pwd: “password!“,
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "abhilash",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
Disconnect the mongo shell.
4. Re-start the MongoDB instance with access control.
$ mongod --auth --port 27017 --dbpath /usr/local/var/mongodb/db1
Clients that connect to this instance must now authenticate themselves as a MongoDB user.
> db.auth();
Error: auth expects either (username, password) or ({ user: username, pwd: password })
0
> db
test
** To authenticate during connection:
$ mongo --port 27017 -u "abhilash" -p "password!” --authenticationDatabase "admin"
** To authenticate after connecting
Connect the mongo shell
$ mongo
> use admin
> db.auth("abhilash", “password!“ )
> mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Server has startup warnings:
2018-01-22T10:32:18.027+0530 I CONTROL [initandlisten]
2018-01-22T10:32:18.027+0530 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-01-22T10:32:18.027+0530 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2018-01-22T10:32:18.027+0530 I CONTROL [initandlisten]
> use admin
switched to db admin
> db
admin
> db.auth("abhilash", "password!”);
1
> use my_dbname;
> db.createUser(
{
user: "vadmin",
pwd: “pass111!”,
roles: [ { role: "readWrite", db: "my_dbname" },
{ role: "read", db: "test" } ]
}
)
Reference: Mongodb enable-authentication


