How to Install MongoDB on Ubuntu 20.04
Choose a different version or distribution
Introduction
Before, we begin talking about the steps to install MongoDB on Ubuntu 20.04. First, let's understand - What is MongoDB?
MongoDB is a popular NoSQL database, ideal for handling vast amounts of unstructured data. It offers high performance, scalability, and flexibility. With its JSON-like documents, MongoDB allows easy integration with web applications. As a leading database solution, it empowers businesses to manage data efficiently and create dynamic applications effortlessly.
Advantages of MongoDB
- Flexible schema: MongoDB's schema-free approach allows easy data model changes.
- High performance: With its indexing and query optimization, MongoDB ensures speedy data retrieval.
- Scalability: Supports horizontal scaling for handling large datasets and high traffic.
- JSON-like documents: Simplifies data integration with web applications.
- Replication & fault tolerance: Ensures data redundancy and reliability for uninterrupted operations.
Prerequisites to Install MongoDB on Ubuntu 20.04
You will need the following to complete this tutorial:
- One server running Ubuntu 20.04. This server needs a firewall set up with UFW and a non-root administrative user.
Step 1 — Installing MongoDB
MongoDB is available in Ubuntu's official package repositories. The most recent stable release of MongoDB, as of this writing, is 4.4
, although the version that is currently accessible from the default Ubuntu repositories is 3.6
.
You must add MongoDB's dedicated package repository to your APT sources if you want to use the most recent version of this software. After that, you can install mongodb-org
, a meta-package that always points to the most recent MongoDB release.
Use the command below to import the public GPG key for the most recent stable MongoDB version. If you want to install a different version of MongoDB than 4.4
, make sure to modify the URL component of this script to match that.
curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
In various operating systems, there is a command-line tool called cURL that is used to transfer data. It reads whatever information is stored at the URL supplied to it and displays it to the system's output. In the example below, cURL outputs the contents of the GPG key file and then pipes it into the sudo apt-key add -
command, which adds the GPG key to your list of trusted keys.
Also, note that this curl
command includes the -fsSL
options, which tell cURL to fail silently. This means that if cURL is unable to reach the GPG server or the GPG server is unavailable, it will not add the resulting error code to your list of trusted keys.
If the key was successfully added, the command will return OK
:
Output
OK
You can use the following command to confirm that the key was added properly if you would like to:
apt-key list
The output will include the MongoDB key somewhere:
Output
/etc/apt/trusted.gpg
--------------------
pub rsa4096 2019-05-28 [SC] [expires: 2024-05-26]
2069 1EEC 3521 6C63 CAF6 6CE1 6564 08E3 90CF B1F5
uid [ unknown] MongoDB 4.4 Release Signing Key <packaging@mongodb.com>
. . .
At this stage, your APT installation is still unable to locate the mongodb-org
package that is required to install the most recent MongoDB version.
The server's sources.list
file and sources.list.d
directory are the two locations where APT looks for online sources of packages to download and install. sources.list
is a file that includes active APT data sources, one per line, with the most preferred sources mentioned first. You can add such sources.list
entries as separate files to the sources.list.d
directory.
Execute the following command to generate the mongodb-org-4.4.list
file in the sources.list.d
directory. There is only one line of text in this file, which reads deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
APT receives all the information it requires about what the source is and its location in this one line:
deb
: This indicates that a standard Debian architecture is mentioned in the source entry. In other instances, this section of the line can read deb-src, meaning the source entry contains the source code for a Debian distribution.[ arch=amd64,arm64 ]
: This identifies which architectures the APT data must be downloaded to. It specifically mentions theamd64
andarm64
architectures in this instance.https://repo.mongodb.org/apt/ubuntu
: This is a URI that represents the location of the APT data. The URL in this instance points to the HTTPS address of the official MongoDB repository.focal/mongodb-org/4.4
: Ubuntu repositories can include multiple distinct releases. This specifies that you only want themongodb-org
package in version4.4
to be made accessible for thefocal
release of Ubuntu (“Focal Fossa” being the code name of Ubuntu 20.04).multiverse
: This section points APT to one of the four main Ubuntu repositories. It is pointing to themultiverse
repository in this case.
Update the local package index on your server after running this command so that APT knows where to look for the mongodb-org
package:
sudo apt update
After that, you can install MongoDB:
sudo apt install mongodb-org
When prompted, type Y
, followed by ENTER
, to confirm that you wish to install the package.
Your machine will have MongoDB installed once the command is completed. It is not, however, yet ready for usage. The next step is to launch MongoDB and ensure that it is operating properly.
Step 2 — Starting the MongoDB Service and Testing the Database
The previous step's installation automatically configures MongoDB to run as a daemon controlled by systemd
, which means you may manage MongoDB using the various systemctl
commands. Nevertheless, this installation procedure does not start the service automatically.
Start the MongoDB service by using the systemctl
command as follows:
sudo systemctl start mongod.service
Check the status of the service next. It is worth noting that this command excludes .service
from the service file definition. If this suffix is not already present, systemctl
will automatically add it to every argument you supply, so it isn’t necessary to include it:
sudo systemctl status mongod
The following output will be returned by this command while the service is active:
Output
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-09 12:57:06 UTC; 2s ago
Docs: https://docs.mongodb.org/manual
Main PID: 37128 (mongod)
Memory: 64.8M
CGroup: /system.slice/mongod.service
└─37128 /usr/bin/mongod --config /etc/mongod.conf
Enable the MongoDB service to start at boot after making sure it is functioning as expected:
sudo systemctl enable mongod
By connecting to the database server and running a diagnostic command, you can further confirm that the database is operational. The next command will establish a connection to the database and print its current version, server address, and port. In addition, it will return the outcome of the internal connectionStatus
command used by MongoDB:
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
The database connection status will be checked and returned by connectionStatus
. When the ok
field in the response has a value of 1
, it means that the server is functioning as expected:
Output
MongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") }
MongoDB server version: 4.4.0
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
Additionally, the database is running on port 27017
on 127.0.0.1
, which is the local loopback address for localhost. This is the default port number for MongoDB.
We will then examine using systemd
to manage the MongoDB server instance.
Step 3 — Managing the MongoDB Service
As already mentioned, the installation procedure outlined in Step 1 sets up MongoDB to function as a systemd
service. This indicates that you can manage it using regular systemctl
commands, just as you would with other Ubuntu system services.
As previously stated, the systemctl status
command verifies the MongoDB service status:
sudo systemctl status mongod
The service can be terminated at any moment by typing:
sudo systemctl stop mongod
To restart the service once it has been stopped, type:
sudo systemctl start mongod
Even when the server is already running, you can restart it:
sudo systemctl restart mongod
In Step 2, you allowed MongoDB to start automatically with the server. Type the following if you want to disable this automatic startup:
sudo systemctl disable mongod
Run the enable
command again to re-enable it to start up at boot:
sudo systemctl enable mongod
FAQs to Install MongoDB on Ubuntu 20.04
What is the command to add the MongoDB repository?
Use this command: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
How can I create a MongoDB list file?
Run: echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
.
What is the next step after creating the list file?
Update your packages list with: sudo apt update
.
How do I install the latest version of MongoDB?
Use: sudo apt install -y mongodb-org
.
How can I start the MongoDB service?
Run: sudo systemctl start mongod
.
How do I enable MongoDB to start on system boot?
Use: sudo systemctl enable mongod
.
Are there any security steps to follow after installation?
Yes, secure your MongoDB instance by enabling authentication, setting up user accounts, and configuring firewall rules to restrict access.
Conclusion
In this tutorial, you installed the most recent version of MongoDB and added the official MongoDB repository to your APT instance. After that, you practiced some systemctl
commands and tested Mongo's functionality.
If you have any suggestions or queries, kindly leave them in the comments section.