Understanding Authentication Mechanisms in MongoDB
📖 Scenario: You are setting up a MongoDB database for a small company. To keep the data safe, you need to add authentication so only authorized users can access the database.
🎯 Goal: Learn how to create users with specific roles and enable authentication in MongoDB.
📋 What You'll Learn
Create a user with a username and password
Assign a role to the user
Enable authentication in the MongoDB configuration
Connect to the database using the created user credentials
💡 Why This Matters
🌍 Real World
Authentication protects sensitive data by allowing only authorized users to access the database.
💼 Career
Database administrators and developers must know how to secure MongoDB databases using authentication mechanisms.
Progress0 / 4 steps
1
Create a user with username and password
Use the db.createUser() method to create a user called appUser with password securePass123 in the admin database.
MongoDB
Hint
Remember to specify the user and pwd fields inside db.createUser().
2
Assign a role to the user
Modify the db.createUser() command to assign the readWrite role on the companyDB database to appUser.
MongoDB
Hint
Roles are objects with role and db fields inside the roles array.
3
Enable authentication in MongoDB configuration
Add the line security: with authorization: enabled to the MongoDB configuration file /etc/mongod.conf to enable authentication.
MongoDB
Hint
This setting tells MongoDB to require users to authenticate before accessing data.
4
Connect to MongoDB using the created user
Write the MongoDB shell command to connect to companyDB as appUser using password securePass123.
MongoDB
Hint
Use -u for username, -p for password, and specify --authenticationDatabase for the database where the user is created.
Practice
(1/5)
1. What is the main purpose of authentication in MongoDB?
easy
A. To create indexes on collections
B. To backup the database automatically
C. To optimize query performance
D. To verify the identity of a user before granting access
Solution
Step 1: Understand authentication concept
Authentication means checking who you are before allowing access.
Step 2: Identify the purpose in MongoDB
MongoDB uses authentication to verify user identity to protect data.
Final Answer:
To verify the identity of a user before granting access -> Option D
Quick Check:
Authentication = Verify identity [OK]
Hint: Authentication means checking who you are [OK]
Common Mistakes:
Confusing authentication with backup
Thinking authentication improves query speed
Mixing authentication with indexing
2. Which of the following is the correct syntax to authenticate a user in MongoDB shell?
easy
A. db.auth('username', 'password')
B. db.authenticate('username', 'password')
C. db.login('username', 'password')
D. db.userAuth('username', 'password')
Solution
Step 1: Recall MongoDB authentication method
The correct method to authenticate is db.auth().
Step 2: Match syntax with options
Only db.auth('username', 'password') matches the correct syntax.
Final Answer:
db.auth('username', 'password') -> Option A
Quick Check:
Authenticate = db.auth() [OK]
Hint: Use db.auth() to log in with username and password [OK]
Common Mistakes:
Using db.authenticate() which does not exist
Using db.login() which is invalid
Confusing method names with userAuth()
3. Consider this MongoDB shell command sequence:
use admin
var result = db.auth('alice', 'mypassword')
What will be the value of result if authentication succeeds?
medium
A. 1
B. false
C. true
D. null
Solution
Step 1: Understand db.auth() return value
When authentication succeeds, db.auth() returns 1.
Step 2: Match return value with options
Only 1 matches the expected numeric return value.
Final Answer:
1 -> Option A
Quick Check:
Success returns 1 [OK]
Hint: db.auth() returns 1 if login works [OK]
Common Mistakes:
Expecting boolean true instead of numeric 1
Thinking it returns false on success
Assuming it returns null or undefined
4. You run db.auth('bob', 'wrongpass') but it always returns 1. What is the most likely cause?
medium
A. The user 'bob' does not exist
B. The password is case-insensitive
C. You are already authenticated as 'bob' or another user
D. MongoDB does not check passwords
Solution
Step 1: Understand db.auth() behavior when already logged in
If already authenticated, db.auth() returns 1 without rechecking password.
Step 2: Analyze why wrong password still returns 1
This happens because the session is already authenticated as 'bob' or another user.
Final Answer:
You are already authenticated as 'bob' or another user -> Option C
Quick Check:
Already logged in means db.auth() returns 1 [OK]
Hint: db.auth() returns 1 if already logged in [OK]
Common Mistakes:
Assuming wrong password always returns false
Thinking MongoDB ignores passwords
Believing user must exist for true return
5. You want to create a user with read-only access to the sales database. Which command correctly creates this user with proper authentication roles?
hard
A. db.addUser('readonly', 'pass123', 'read')
B. db.createUser({user: 'readonly', pwd: 'pass123', roles: [{role: 'read', db: 'sales'}]})
C. db.createUser({username: 'readonly', password: 'pass123', roles: ['read']})
D. db.createUser({user: 'readonly', pwd: 'pass123', roles: ['readWrite']})
Solution
Step 1: Identify correct syntax for creating user with roles
The correct syntax uses db.createUser() with user, pwd, and roles as an array of objects specifying role and database.
Step 2: Match read-only role on 'sales' database
db.createUser({user: 'readonly', pwd: 'pass123', roles: [{role: 'read', db: 'sales'}]}) correctly assigns role 'read' on database 'sales'.