MongoDB is the most popular NoSQL database server and it can be used to store JSON documents natively in BSON format. MongoDB is a document-oriented, open-source, and platform-independent Database Management System (DBMS). This tutorial provides all the steps required to install and set up the MongoDB 5 Community Server on Ubuntu 20.04 LTS. The steps should be the same for other versions of MongoDB including MongoDB 4 and Linux systems.
This tutorial provides the steps required to install MongoDB on the server version of Ubuntu. It uses a package manager to install the latest MongoDB 5 Community Edition on Ubuntu 20.04 LTS. You can also follow How To Install MongoDB on Ubuntu Desktop to install MongoDB on the desktop version for development purposes.
At the time of writing this tutorial, the most recent version of MongoDB i.e. 5.0 and onwards provides packages only for the 64-bit versions of Ubuntu 16.04 LTS, Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, and above.
Notes: You can also follow How To Install MongoDB 5 on Windows and How To Install MongoDB 5 on Mac.
Remove the Previous Installation
We can check the previous installation and remove it in case it's already installed on the system using the commands shown below.
# Check previous installation
sudo apt list --installed | grep mongodb
# Take the backup of existing databases
# Stop the server
sudo service mongod stop
# Completely remove previous installation
sudo apt remove mongodb
sudo apt purge mongodb
You can use the below-mentioned commands to remove the MongoDB installed on the desktop version using the installer downloaded from the official website.
# Remove server
sudo apt remove mongodb-org-server
# Remove shell
sudo apt remove mongodb-org-shell
We can also clean the files of the previous installation using the commands shown below.
# Remove residual files
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
Import Public Key
In this step, we will import the MongoDB public GPG Key using the command as shown below.
# Import GPG Key
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
# Result
OK
The above command will show the OK message after adding the Key.
Create List File
Create the list file for Ubuntu 20.04 LTS using the command as shown below.
# Create list file using nano editor
sudo nano /etc/apt/sources.list.d/mongodb-org-5.0.list
# Copy and paste the content to the list file
deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/5.0 multiverse
You can also create the file directly as shown below.
# Direct method
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
Now refresh the packages index using the command as shown below.
# Install MongoDB
sudo apt-get install -y mongodb-org
# Installtion last few messages
Adding user `mongodb' to group `mongodb' ...
Adding user mongodb to group mongodb
Done.
Setting up mongodb-org-shell (5.0.3) ...
Setting up mongodb-database-tools (100.5.0) ...
Setting up mongodb-org-mongos (5.0.3) ...
Setting up mongodb-org-database-tools-extra (5.0.3) ...
Setting up mongodb-org-database (5.0.3) ...
Setting up mongodb-org-tools (5.0.3) ...
Setting up mongodb-org (5.0.3) ...
Processing triggers for man-db (2.9.1-1) ...
We can see that the above command installed the packages mongodb-org, mongodb-org-database, mongodb-org-mongos, mongodb-org-shell, and mongodb-org-tools. The command also starts the MongoDB database service. We can optionally avoid the auto-upgrade of the currently installed MongoDB packages using the commands as shown below.
# Keep the current version installed on system upgrade
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
Verify Installation
In this step, we will verify the installation using the commands as shown below.
# Check version
mongod -version
# Output
db version v5.0.3 Build Info: { "version": "5.0.3", "gitVersion": "657fea5a61a74d7a79df7aff8e4bcf0bc742b748", "openSSLVersion": "OpenSSL 1.1.1f 31 Mar 2020", "modules": [], "allocator": "tcmalloc", "environment": { "distmod": "ubuntu1804", "distarch": "x86_64", "target_arch": "x86_64" } }
This confirms that we have successfully installed MongoDB 5 on Ubuntu.
Server Commands
We can start and stop the server as a system service using the commands shown below.
# Start the Service
sudo service mongod start
# Restart the Service
sudo service mongod restart
# Stop the Service
sudo service mongod stop
# Check status
sudo service mongod status
We can also enable or disable the MongoDB server to start automatically with the server. The default behavior is to start the server as part of the installation process.
# Disable auto-start
sudo systemctl disable mongod
# Enable auto-start
sudo systemctl enable mongod
Getting Started With MongoDB
Start the MongoDB Shell as shown in Fig 1.
It shows the warning message indicating that the MongoDB Shell has been deprecated and will be removed in future versions of MongoDB. Instead of mongo shell, we can use mongosh using the mongosh command as shown in Fig 2.
The mongosh outputs a message indicating that access control is not enabled for the installation. MongoDB provides options to create the Authentication Database to store user details and privileges across different databases. The same user having appropriate permissions can act on multiple databases using the Role-Based Access Control (RBAC). The RBAC provided by MongoDB governs access to a MongoDB system.
Now list the databases as shown below.
# List Databases
show databases
# Output
admin 41 kB
config 73.7 kB
local 73.7 kB
We can see that MongoDB has already created three databases i.e. admin, config, and local. Now we will add the user admin with root role to the admin database using the commands as shown below.
# Switch to admin database
use admin
# Create the admin user with root role
db.createUser( { user: "admin", pwd: "<password>", roles: [ "root" ] } )
# Output
{ ok: 1 }
# Exit the Shell
exit
This is how we can add admin users to the admin database and assign a role to the user. We can start creating the databases and add data either using the shell or programmatically using the preferred language.
Secure The Server
We can further tighten the security by enabling the MongoDB authentication using the commands shown below.
# Open the config
sudo nano /lib/systemd/system/mongod.service
# Update the ExecStart value
#ExecStart=/usr/bin/mongod --config /etc/mongod.conf
ExecStart=/usr/bin/mongod --auth --config /etc/mongod.conf
Also, enable the authorization as shown below.
# Enable Authorization
sudo nano /etc/mongod.conf
# Update
....
....
# security:
security:
authorization: enabled
....
....
# Save and close the Editor - Ctrl + O + Enter and Ctrl + X
Now save the file and reload the settings using the command shown below.
# Reload system service
sudo systemctl daemon-reload
# Restart the server
sudo service mongod restart
Now we can connect with MongoDB using the shell as shown below.
# Connect securely using mongo shell
mongo -u admin -p <password> --authenticationDatabase admin
# OR
mongo -u admin --authenticationDatabase admin
# Connect securely using mongosh
mongosh --username admin --password <password> --authenticationDatabase admin
# OR
mongosh -u admin -p <password> --authenticationDatabase admin
# OR
mongosh -u admin --authenticationDatabase admin
# Connect securely using mongosh
mongosh "mongodb://<ip or hostname>:<port>" -u admin -p <password> --authenticationDatabase admin
It won't show the warning message about Access Control as we saw in Fig 2.
Now we have secured the Shell and only the authenticated users with valid roles and permissions can access the database.
Summary
This tutorial provided all the steps required to install MongoDB Server 5.0 on Ubuntu 20.04 LTS. It also provided the steps to connect the server using shell and added an admin user with the root role. Finally, we have enabled authentication to allow authenticated users using mongo shell and mongosh.