Docs Home → Atlas Open Service Broker
Manage Database Users
Important
Atlas Open Service Broker is deprecated. Use the MongoDB Atlas Operator instead.
You can create and delete Atlas database users through the Atlas Open Service Broker.
Prerequisites
Before managing database users, you must deploy a replica set.
Add a Database User
To create a database user, you first define a ServiceBinding resource in Kubernetes. Then, the Atlas Open Service Broker creates a corresponding database user in Atlas.
Create the service binding that corresponds to the Atlas user.
- Copy the following resource definition example. - This is a YAML file that you can modify to meet your desired configuration. - apiVersion: servicecatalog.k8s.io/v1beta1 - kind: ServiceBinding - metadata: - name: <USER_NAME> - namespace: <NAMESPACE> - spec: - instanceRef: - name: <CLUSTER_NAME> 
- Open your preferred text editor and paste the resource definition into a new text file. 
Configure the required settings.
The highlighted settings are required to create a database user:
| Key | Description | Example | 
|---|---|---|
| metadata.name | The name of the service binding resource in Kubernetes. | atlas-user-1 | 
| metadata.namespace | The Kubernetes namespace where the service binding resource is
created. | atlas | 
| spec.intanceRef.name | The name of the  ServiceInstanceresource in Kubernetes that
corresponds to your Atlas cluster. | my-atlas-cluster | 
When you create a database user, the Atlas Open Service Broker randomly generates an Atlas username and password for the user. The Service Catalog automatically stores the users's Atlas username, password, and connection URI in a Kubernetes secret.
If you do not specify additional settings, the database user is created with the following default attributes:
- SCRAM-SHAauthentication on the- admindatabase
- readWriteAnyDatabasepermissions on the- admindatabase
Add any additional settings for the user.
You can configure additional settings for the user under the
spec.parameters.user key. These settings correspond to the
request body parameters
of the Create a Database User Public API method.
Important
The following API parameters are overwritten by the required Atlas Open Service Broker settings from the previous step and should not be specified:
- databaseName
- groupId
- password
- username
Example
This example resource definition creates:
- a Kubernetes resource called - atlas-user-1in the- atlasnamespace and
- an Atlas database user with the following configuration: - SCRAM-SHAauthentication on the- admindatabase with randomly generated username and password
- readWritepermissions to the- listingsAndReviewscollection on the- sample_airbnbdatabase
- dbAdminpermissions to the- sample_geospatialdatabase
 
apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceBinding metadata:   name: atlas-user-1   namespace: atlas spec:   instanceRef:     name: my-atlas-cluster   parameters:     user:       roles:       - databaseName: sample_airbnb         collectionName: listingsAndReviews         roleName: readWrite       - databaseName: sample_geospatial         roleName: dbAdmin 
View the status of the new user.
To view the status of the new user within the Kubernetes cluster, pass the
metadata.name from replica-set.yaml into the following
command:
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE> 
The status of the user appears under Bindings.
Example
Bindings:       NAME        STATUS +---------------+--------+   atlas-user-1     Ready 
To see a detailed view of the user, pass the metadata.name from
atlas-user-1.yaml into the following command:
svcat describe binding <METADATA.NAME> -n <METADATA.NAMESPACE> 
The command returns the details of the user.
Example
Name:        atlas-user-1 Namespace:   atlas Status:      Ready - Injected bind result @ 2019-08-24 20:57:43 +0000 UTC Secret:      atlas-user-1 Instance:    my-replica-set Parameters:   user:     roles:     - collectionName: listingsAndReviews       databaseName: sample_airbnb       roleName: readWrite     - databaseName: sample_geospatial       roleName: dbAdmin Secret Data:   password   44 bytes   uri        58 bytes   username   36 bytes 
Retrieve the Atlas connection details of the new user.
The connection details for the user are stored in a secret that has
the same name and namespace as the ServiceBinding resource. The
secret is base64-encoded by Kubernetes and contains the Atlas
username, password, and URI of the user.
- Pass - metadata.nameand- metadata.namespacefrom- atlas-user-1.yamlinto the following command to retrieve the Kubernetes secret for the user:- kubectl get secret <METADATA.NAME> -n <METADATA.NAMESPACE> -o yaml - The command returns the base64-encoded Atlas password, URI, and username of the user: - Example- apiVersion: v1 - data: - password: MlFhTnB4NzNoaEYwZWFKFMCjRUlNU2Iwbk5OMnJPT0JGZnZOeldKMS16Zz0= - uri: bW9uZ29kYitzcnY6Ly8wMTY5YjA5My1jNTEyLTExZTktOGQyMC1kbjZyNy5tb25nb2RiLXFhLm5ldA== - username: NTJjMzVlNjctYzdhMy0xMWKR7ThkMjAtMDI0MmFjMTEwMDA3 - kind: Secret - metadata: - creationTimestamp: "2019-08-26T01:46:30Z" - name: atlas-user-1 - namespace: atlas - ownerReferences: - - apiVersion: servicecatalog.k8s.io/v1beta1 - blockOwnerDeletion: true - controller: true - kind: ServiceBinding - name: atlas-user-1 - uid: 52c35ea1-c7a3-11e9-8d20-0242ac113457 - resourceVersion: "79692" - selfLink: /api/v1/namespaces/atlas/secrets/atlas-user-1 - uid: 14829566-4859-4b47-97f6-d0a2f7425906 - type: Opaque 
- Pass - data.usernamefrom the secret into the following command to decode the user's Atlas username:- echo '<DATA.USERNAME>' | base64 --decode - The command returns the decoded Atlas username: - Example- 52c35e67-c7a3-11e9-8d20-0374ac110007 - Repeat the command with - data.passwordand- data.urito decode the user's Atlas password and URI.- echo '<DATA.PASSWORD>' | base64 --decode - echo '<DATA.URI>' | base64 --decode 
Tip
Connecting to your Atlas cluster
To connect to your deployment, pass the decoded Atlas URI and username into the following command:
mongo <DECODED_URI>  --username <DECODED_USERNAME> 
When you are prompted for the password, enter the user's decoded Atlas password.
Delete a Database User
To delete a database user, pass the metadata.name from the
ServiceBinding resource to one of the following commands:
kubectl delete servicebindings <METADATA.NAME> \         -n <METADATA.NAMESPACE> 
To confirm that the user has been deleted, pass the
metadata.name from the cluster resource into the following
command:
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE> 
The command returns No bindings defined under Bindings.