Authentication and User Management
Beginner10 min
Secure your MongoDB deployment by enabling authentication, creating users with specific roles, and managing access control.
Prerequisites
- -MongoDB installed and running
- -mongosh available
Steps
1
Create an admin user
Create a superuser in the admin database before enabling authentication.
$ mongosh --eval 'db.getSiblingDB("admin").createUser({user: "admin", pwd: "secure_admin_pass", roles: [{role: "userAdminAnyDatabase", db: "admin"}, {role: "readWriteAnyDatabase", db: "admin"}, {role: "clusterAdmin", db: "admin"}]})'
Create the admin user BEFORE enabling authentication. Once auth is enabled, you cannot connect without credentials.
2
Create an application user with specific database access
Add a user with read-write access limited to a single database.
$ mongosh -u admin -p secure_admin_pass --authenticationDatabase admin --eval 'db.getSiblingDB("mydb").createUser({user: "app_user", pwd: "app_secure_pass", roles: [{role: "readWrite", db: "mydb"}]})'
3
Create a read-only user
Add a user that can only read data for reporting or analytics.
$ mongosh -u admin -p secure_admin_pass --authenticationDatabase admin --eval 'db.getSiblingDB("mydb").createUser({user: "readonly_user", pwd: "readonly_pass", roles: [{role: "read", db: "mydb"}]})'
4
Enable authentication in mongod config
Update the MongoDB configuration to require authentication for all connections.
$ echo -e 'security:\n authorization: enabled' | sudo tee -a /etc/mongod.conf && sudo systemctl restart mongod
After this restart, all connections must authenticate. Test with: mongosh -u admin -p secure_admin_pass --authenticationDatabase admin
5
List all users in a database
View existing users and their assigned roles.
$ mongosh -u admin -p secure_admin_pass --authenticationDatabase admin --eval 'db.getSiblingDB("mydb").getUsers()'
Full Script
FAQ
Discussion
Loading comments...