Create a User
On this page
- MongoDB Atlas Limitations
- Prerequisites
- Procedure
- Configure Database Users for MongoDB Atlas
- Open the Add New Database User dialog.
- Select Password.
- Enter user information.
- Assign privileges.
- Optional: Specify the resources in the project that the user can access.
- Optional: Save as temporary user.
- Click Add User.
- Configure Users for Self-Hosted Deployments
- Connect and authenticate
- Create additional users for your deployment
- Connect to the instance and authenticate as
myTester
- Insert a document as
myTester
- Additional Examples
- Username/Password Authentication
- Kerberos Authentication
- LDAP Authentication
- x.509 Client Certificate Authentication
- Next Steps
With access control enabled, users are required to identify themselves. You have to grant a user one or more roles. A role grants a user privileges to perform certain actions on MongoDB resources.
Each application and user of a MongoDB system should map to a distinct user. This principle of access isolation facilitates access revocation and ongoing user maintenance. To ensure a system of least privilege, only grant the minimal set of privileges required to a user.
The user information on this page applies to deployments hosted in all of the following environments unless specified otherwise:
MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
MongoDB Enterprise: The subscription-based, self-managed version of MongoDB
MongoDB Community: The source-available, free-to-use, and self-managed version of MongoDB
MongoDB Atlas Limitations
The following limitations apply only to deployments hosted in MongoDB Atlas. If any of these limits present a problem for your organization, contact Atlas support.
The available MongoDB Atlas built-in roles and specific privileges support a subset of MongoDB commands. See Unsupported Commands in M10+ Clusters for more information.
MongoDB Atlas supports a maximum of 100 database users per MongoDB Atlas project. If you require more than 100 database users on a project, contact Atlas support.
You must use the Atlas CLI, Atlas Administration API, Atlas UI, or a supported integration to add, modify, or delete database users on MongoDB Atlas database deployments. Otherwise, MongoDB Atlas rolls back any user modifications.
Prerequisites
To be able to create users, you need to:
For routine user creation, you must possess the following permissions:
To create a new user in a database, you must have the
createUser
action on that database resource.To grant roles to a user, you must have the
grantRole
action on the role's database.
The userAdmin
and
userAdminAnyDatabase
built-in roles provide
createUser
and grantRole
actions on their
respective resources.
To create users for MongoDB Atlas, you must have Organization Owner or Project Owner access to MongoDB Atlas. These roles are unique to MongoDB Atlas and are separate from database users. To learn more, see Atlas User Roles.
Procedure
Note
The following procedures use SCRAM authentication. For additional information on other authentication mechanisms, see Additional Examples.
Configure Database Users for MongoDB Atlas
A MongoDB Atlas project can have users with different authentication methods.
You cannot change a user's authentication method after creating that user. To use an alternative authentication method, you must create a new user.
Configure database users for your MongoDB Atlas deployment who use SCRAM authentication:
The Atlas CLI uses the following commands to create new database users and X.509 certificates. The options you specify determine the authentication method.
To create a database user for your project using the Atlas CLI, run the following command:
atlas dbusers create [builtInRole]... [options]
To create a new Atlas-managed X.509 certificate for the specified database user using the Atlas CLI, run the following command:
atlas dbusers certs create [options]
To learn more about the syntax and parameters for the previous commands, see the Atlas CLI documentation for atlas dbusers create and atlas dbusers certs create.
Assign privileges.
Select the database user privileges. You can assign privileges to the new user in one or more of the following ways:
Select a built-in role from the Built-in Role dropdown menu. You can select one built-in role per database user within the Atlas UI. If you delete the default option, you can click Add Built-in Role to select a new built-in role.
If you have any custom roles defined, you can expand the Custom Roles section and select one or more roles from the Custom Roles dropdown menu. Click Add Custom Role to add more custom roles. You can also click the Custom Roles link to see the custom roles for your project.
Expand the Specific Privileges section and select one or more privileges from the Specific Privileges dropdown menu. Click Add Specific Privilege to add more privileges. This assigns the user specific privileges on individual databases and collections.
MongoDB Atlas can apply a built-in role, multiple custom roles, and multiple specific privileges to a single database user.
To remove an applied role or privilege, click Delete next to the role or privilege you wish to delete.
Note
MongoDB Atlas doesn't display the Delete icon next to your Built-in Role, Custom Role, or Specific Privilege selection if you selected only one option. You can delete the selected role or privilege once you apply another role or privilege.
For more information on authorization, see Role-Based Access Control and Built-in Roles.
Optional: Specify the resources in the project that the user can access.
By default, users can access all the clusters and federated database instances in the project. You can restrict access to specific clusters and federated database instances by performing both of the following steps:
Toggle Restrict Access to Specific Clusters/Federated Database Instances to ON.
Select the clusters and federated database instances to grant the user access to from the Grant Access To list.
Optional: Save as temporary user.
Toggle Temporary User to On and choose a time after which MongoDB Atlas can delete the user from the Temporary User Duration dropdown. You can select one of the following time periods for the user to exist:
6 hours
1 day
1 week
In the Database Users tab, temporary users display the time remaining until MongoDB Atlas will delete the user. Once MongoDB Atlas deletes the user, any client or application that uses the temporary user's credentials loses access to the cluster.
Configure Users for Self-Hosted Deployments
To configure database users for your self-hosted MongoDB Enterprise or MongoDB Community deployment, follow these steps:
Connect and authenticate
Using mongosh
, connect to your primary
mongod
or, in a sharded cluster, connect to your
mongos
and authenticate as a user administrator or a
user with the required privileges:
Start mongosh
with the -u
<username>
, -p
, and the
--authenticationDatabase <database>
command line options:
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myUserAdmin" -p
Enter your password when prompted.
Using mongosh
, connect to your database
deployment:
mongosh --port 27017
In mongosh
, switch to the
authentication database (in this case, admin
), and
use the db.auth(<username>, <pwd>)
method to authenticate:
use admin db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
Tip
The passwordPrompt()
method prompts you to enter the
password. You can also specify your password directly as a string. We
recommend to use the passwordPrompt()
method to avoid the
password being visible on your screen and potentially leaking the
password to your shell history.
Enter the password when prompted.
Create additional users for your deployment
Note
The following step uses SCRAM authentication. For additional information on other authentication mechanisms, see Additional Examples.
After authenticating as the user administrator, use the
db.createUser()
method to create additional users. You can assign
any built-in roles or
user-defined roles to the
users.
The following operation adds a user myTester
to the test
database who has the readWrite
role in the test
database as well as the read
role in the reporting
database.
use test db.createUser( { user: "myTester", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "reporting" } ] } )
Tip
The passwordPrompt()
method prompts you to enter the
password. You can also specify your password directly as a string. We
recommend to use the passwordPrompt()
method to avoid the
password being visible on your screen and potentially leaking the
password to your shell history.
The database where you create the user (in this example, test
) is
that user's authentication database. Although the user authenticates to
this database, the user can have roles in other databases. The
user's authentication database does not limit the user's privileges.
After creating the additional users, exit mongosh
.
Connect to the instance and authenticate as myTester
Important
After exiting mongosh
as myUserAdmin
, reconnect as
myTester
:
Start mongosh
with the -u
<username>
, -p
, and the
--authenticationDatabase <database>
command line options:
mongosh --port 27017 -u "myTester" \ --authenticationDatabase "test" -p
Enter the password for the user when prompted.
Using mongosh
, connect to your database
deployment:
mongosh --port 27017
In mongosh
, switch to the
authentication database (in this case, admin
), and
use the db.auth(<username>, <pwd>)
method to authenticate:
use test db.auth("myTester", passwordPrompt()) // or cleartext password
Tip
The passwordPrompt()
method prompts you to enter the
password. You can also specify your password directly as a string. We
recommend to use the passwordPrompt()
method to avoid the
password being visible on your screen and potentially leaking the
password to your shell history.
Enter the password for the user when prompted.
Insert a document as myTester
As the user myTester
, you have privileges to perform read and
write operations in the test
database (as well as perform read
operations in the reporting
database). Once authenticated as
myTester
, insert a document into a collection in the test
database. For example, you can perform the following insert
operation in the test
database:
db.foo.insertOne( { x: 1, y: 1 } )
Additional Examples
Username/Password Authentication
The following operation creates a user in the reporting
database with the specified name, password, and roles.
Tip
The passwordPrompt()
method prompts you to enter the
password. You can also specify your password directly as a string. We
recommend to use the passwordPrompt()
method to avoid the
password being visible on your screen and potentially leaking the
password to your shell history.
use reporting db.createUser( { user: "reportsUser", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "read", db: "reporting" }, { role: "read", db: "products" }, { role: "read", db: "sales" }, { role: "readWrite", db: "accounts" } ] } )
Kerberos Authentication
Users that authenticate to MongoDB using an external authentication
mechanism, such as Kerberos, must be created in the $external
database, which allows mongos
or mongod
to consult an external source for authentication.
To use Client Sessions and Causal Consistency Guarantees with $external
authentication users
(Kerberos, LDAP, or x.509 users), usernames cannot be greater
than 10k bytes.
For Kerberos authentication, you must add the Kerberos principal as the username. You do not need to specify a password.
The following operation adds the Kerberos principal
reportingapp@EXAMPLE.NET
with read-only access to the records
database:
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
Tip
See also:
For more information about setting up Kerberos authentication for your MongoDB deployment, see the following tutorials:
LDAP Authentication
Users that authenticate to MongoDB using an external authentication
mechanism, such as LDAP, must be created in the $external
database, which allows mongos
or mongod
to consult an external source for authentication.
To use Client Sessions and Causal Consistency Guarantees with $external
authentication users
(Kerberos, LDAP, or x.509 users), usernames cannot be greater
than 10k bytes.
For LDAP authentication, you must specify a username. You do not need to specify the password, as that is handled by the LDAP service.
The following operation adds the reporting
user with read-only
access to the records
database:
use $external db.createUser( { user: "reporting", roles: [ { role: "read", db: "records" } ] } )
Tip
See also:
For more information about setting up LDAP authentication for your MongoDB deployment, see the following tutorials:
To learn more about setting up LDAP authentication for MongoDB Atlas, see Add Database Users in the MongoDB Atlas documentation.
x.509 Client Certificate Authentication
Users that authenticate to MongoDB using an external authentication
mechanism, such as x.509 Client Certificate Authentication, must be created in the $external
database, which allows mongos
or mongod
to consult an external source for authentication.
To use Client Sessions and Causal Consistency Guarantees with $external
authentication users
(Kerberos, LDAP, or x.509 users), usernames cannot be greater
than 10k bytes.
For x.509 Client Certificate authentication, you must add the value of
the subject
from the client certificate as a MongoDB user. Each
unique x.509 client certificate corresponds to a single MongoDB user.
You do not need to specify a password.
The following operation adds the client certificate subject
CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry
user with read-only access to the records
database.
use $external db.createUser( { user: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", roles: [ { role: "read", db: "records" } ] } )
Tip
See also:
For more information about setting up x.509 Client Certificate authentication for your MongoDB deployment, see the following tutorials:
To learn more about setting up x.509 Client Certificate authentication for MongoDB Atlas, see Add Database Users in the MongoDB Atlas documentation.
Next Steps
To manage users, assign roles, and create custom roles for your self-hosted MongoDB Enterprise or MongoDB Community deployment, see Manage Users and Roles.
You can also manage users, assign roles, and create custom roles for your MongoDB Atlas deployment.