5

Install MongoDB 5.0 on CentOS 8/7 & RHEL 8/7

 2 years ago
source link: https://computingforgeeks.com/how-to-install-mongodb-on-centos-rhel-linux/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Install MongoDB 5.0 on CentOS 8/7 & RHEL 8/7
Search

MongoDB is a general-purpose, object-oriented, simple, and dynamic NoSQL database server used in developing modern dynamic apps. This implies that data objects are stored as separate documents in a collection unlike in traditional relational databases where rows and columns are used. MongoDB is written in C++ for massive scalability and flexibility which offers easy querying and indexing for developers.

MongoDB offers both Community and Enterprise editions. The Community Edition is free for download while the Enterprise Edition is part of the Mongo Enterprise Advanced subscription. The Enterprise version has more features such as LDAP, Kerberos support, on-disk encryption, and auditing. Also, it includes comprehensive support for MongoDB development.

MongoDB is available for Windows, macOS, and Linux Operating Systems and is supported by both 32 and 64-bit architectures. MongoDB 5.0 is the latest release version released on July 13, 2021. It has the following new features:

  1. Live Resharding
  2. Native time-series features for efficiently storing sequences of measurements over a period of time
  3. Multi cloud-security tools
  4. The Versioned API future-proofs your applications.
  5. Serverless database on MongoDB Atlas
  6. Seamless data redistribution

Install MongoDB 5.0 on CentOS 8/7 & RHEL 8/7

In this guide, we will walk through the installation of MongoDB 5.0 on CentOS 8/7 & RHEL 8/7 using the below steps.

Step 1: Configure MongoDB YUM repository on CentOS 8/7 & RHEL 8/7

We need to create a /etc/yum.repos.d/mongodb-org-5.0.repo file to enable us install MongoDB 5.0 using the yum command.

sudo vi /etc/yum.repos.d/mongodb-org-5.0.repo

Add the below lines to the file.

[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc

Alternatively, one can download and install the .rpm file directly from the MongoDB repository. On the page, downloads are organized by the RedHat / CentOS version. Download the package for your distribution and architecture.

Step 2: Install the MongoDB 5.0 packages on CentOS 8/7 & RHEL 8/7

The latest version can now be downloaded since the repositories have been added successfully. Install the latest version of MongoDB on CentOS 8/7 & RHEL 8/7 using the below command:

sudo yum install mongodb-org

Dependency Tree:

Dependencies Resolved

================================================================================
 Package                          Arch   Version       Repository          Size
================================================================================
Installing:
 mongodb-org                      x86_64 5.0.2-1.el7   mongodb-org-5.0    6.1 k
Installing for dependencies:
 cyrus-sasl                       x86_64 2.1.26-23.el7 rhel-7-server-rpms  88 k
 cyrus-sasl-gssapi                x86_64 2.1.26-23.el7 rhel-7-server-rpms  41 k
 cyrus-sasl-plain                 x86_64 2.1.26-23.el7 rhel-7-server-rpms  39 k
 mongodb-database-tools           x86_64 100.5.0-1     mongodb-org-5.0     47 M
 mongodb-mongosh                  x86_64 1.0.5-1.el7   mongodb-org-5.0     42 M
 mongodb-org-database             x86_64 5.0.2-1.el7   mongodb-org-5.0    6.2 k
 mongodb-org-database-tools-extra x86_64 5.0.2-1.el7   mongodb-org-5.0     11 k
 mongodb-org-mongos               x86_64 5.0.2-1.el7   mongodb-org-5.0     19 M
 mongodb-org-server               x86_64 5.0.2-1.el7   mongodb-org-5.0     27 M
 mongodb-org-shell                x86_64 5.0.2-1.el7   mongodb-org-5.0     15 M
 mongodb-org-tools                x86_64 5.0.2-1.el7   mongodb-org-5.0    6.0 k

Transaction Summary
================================================================================
Install  1 Package (+11 Dependent packages)

Total download size: 151 M
Installed size: 542 M
Is this ok [y/d/N]: y

Allow GPG key importation.

Total                                              1.9 MB/s | 151 MB  01:19     
Retrieving key from https://www.mongodb.org/static/pgp/server-5.0.asc
Importing GPG key 0xE2C63C11:
 Userid     : "MongoDB 5.0 Release Signing Key <[email protected]>"
 Fingerprint: f567 9a22 2c64 7c87 527c 2f8c b00a 0bd1 e2c6 3c11
 From       : https://www.mongodb.org/static/pgp/server-5.0.asc
Is this ok [y/N]: y

Alternatively, you can install a specific version of MongoDB let’s say version 5.0.2 by appending the version number to the package name and specify each component individually as below.

sudo yum install -y mongodb-org-5.0.2 mongodb-org-database-5.0.2 mongodb-org-server-5.0.2 mongodb-org-shell-5.0.2 mongodb-org-mongos-5.0.2 mongodb-org-tools-5.0.2

Check the installed MongoDB version.

$ mongod --version
db version v5.0.2
Build Info: {
    "version": "5.0.2",
    "gitVersion": "6d9ec525e78465dcecadcff99cce953d380fedc8",
    "openSSLVersion": "OpenSSL 1.0.1e-fips 11 Feb 2013",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "rhel70",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

Configure MongoDB on CentOS 8/7 & RHEL 8/7.

With MongoDB successfully installed, we now need to make a few configurations.

1. Start and Enable Service.

First, we need to start and enable the mongod service as below:

sudo systemctl start mongod
sudo systemctl enable mongod

Check the status of the service:

$ systemctl status mongod
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active:active (running) since Wed 2021-08-25 06:36:08 EDT; 9s ago
     Docs: https://docs.mongodb.org/manual
  Process: 8883 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 8881 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 8879 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 8877 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
 Main PID: 8886 (mongod)
   CGroup: /system.slice/mongod.service
           └─8886 /usr/bin/mongod -f /etc/mongod.conf

Aug 25 06:36:04 rhellab systemd[1]: Stopped MongoDB Database Server.
Aug 25 06:36:04 rhellab systemd[1]: Starting MongoDB Database Server...
Aug 25 06:36:04 rhellab mongod[8883]: about to fork child process, waiting until server is ready for connections.
Aug 25 06:36:04 rhellab mongod[8883]: forked process: 8886
Aug 25 06:36:08 rhellab systemd[1]: Started MongoDB Database Server.

2. Secure MongoDB instance

After installation, the MongoDB database has no password and one can easily access it.

sudo vi /etc/mongod.conf

In the conf file, find and uncomment #Security line and add the below content appropriately. Remember the syntax is very important in this file.

security:
  authorization: enabled

Restart the service for changes to apply.

sudo systemctl restart mongod

Using MongoDB 5.0 on CentOS 8/7 & RHEL 8/7.

MongoDB listens on port 27017 by default. You can access the MongoDB shell from the localhost using the code:

$ mongo

Sample Output:

connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("3aab3c08-01c9-4896-acf6-44d6466a58a3") }
MongoDB server version: 5.0.2
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
We recommend you begin using "mongosh".
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
	https://community.mongodb.com
> 

While in the shell, there are a number of activities you can do such as:

1. Create a User and Add Role in MongoDB

Here we will create a user and give them admin roles. We will create and use the db “admin

use admin
db.createUser(
{
user: "mongouser",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)

Set the password for the user.

Now exit the shell using.

> exit
bye

Then login to the created user now.

mongo -u mongouser -p --authenticationDatabase admin

Enter the set password above and proceed.

2. List databases in MongDB

To list existing databases use the command:

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

3. Create a database in MongoDB.

A new database in MongoDB is created by simply switching to a non-existing database and specify the name of the database. Let’s create a database named mongotestdb.

use admin

Sample Output:

> use admin
switched to db admin
> 

4. Create a collection in MongoDB

With the database created, we can now add data to it. Below, we are creating a table for the user details.

db.userdetails.insertOne(
   {F_Name: "fist name",
    L_NAME: "last name",
    ID_NO: "12345",
     AGE: "49",
     TEL: "+254654671"
   }
)

Show the created table/collection

show collections

Sample Output:

> show collections
system.users
system.version
userdetails> 

5. Create a User with read and write privileges.

To create a user with read and write privileges in MongoDB use the syntax in the below commands:

use testdatabase
db.createUser(
   {
     user: 'testuser',
     pwd: 'P@ssWord',
     roles: [ { role: 'readWrite', db: 'testdatabase' } ]
   }
 );

Change MongoDB default Path on CentOS 8/7 & RHEL 8/7.

MongoDB stores its data in the default path in /var/lib/mongo. You can set MongoDB to store data in a custom path as shown below.

First, stop the service:

sudo systemctl stop mongod.service

Then create a new custom path to use to store MongoDB data.

sudo mkdir -p /data/mongo

Set the owner of the directory to mongod as below.

sudo chown -R mongod:mongod /data/mongo

Then modify /etc/mongod.conf to accommodate the new directories.

sudo vi /etc/mongod.conf

Edit the paths in the file as below.

path: /data/log/mongodb/mongod.log   #where to write logging data.
dbPath: /data/mongo    #Where and how to store data.
pidFilePath: /data/mongodb/mongod.pid  # location of pidfile

Configure SELinux and its enforcing mode since the path has been changed. Without configuring SELinux, it will not allow MongoDB to access /sys/fs/cgroup.

First, install checkpolicy.

$ sudo yum install checkpolicy
####OR###
$ sudo yum install policycoreutils-python

Create a new check policy with the information as below.

cat > mongodb_cgroup_memory.te <<EOF
module mongodb_cgroup_memory 1.0;

require {
    type cgroup_t;
    type mongod_t;
    class dir search;
    class file { getattr open read };
}

#============= mongod_t ==============
allow mongod_t cgroup_t:dir search;
allow mongod_t cgroup_t:file { getattr open read };
EOF

Then compile and load the policy created above.

checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
sudo semodule -i mongodb_cgroup_memory.pp

Now a new check policy has been compiled, load the 3 directories as below:

1. Log File Directory

Run the commands below to update files and directory contexts:

semanage fcontext -a -t mongod_log_t '/data/log/mongodb/mongod.*'
chcon -Rv -u system_u -t mongod_log_t '/data/log/mongodb/mongod.log'
restorecon -R -v '/data/log/mongodb/mongod.log'

2. Data Directory

For data directory apply as below:

semanage fcontext -a -t mongod_var_lib_t '/data/mongo.*'
chcon -Rv -u system_u -t mongod_var_lib_t '/data/mongo'
restorecon -R -v '/data/mongo'

3. PID Directory

Same applies to updating pod directories.

semanage fcontext -a -t mongod_var_run_t '/data/mongodb/mongod.*'
chcon -Rv -u system_u -t mongod_var_run_t '/data/mongodb/mongod.pid'
restorecon -R -v '/data/mongodb/mongod.pid'

Update the firewall and Iptables

For Firewalld use:

firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --reload

For those using Iptables:

iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
iptables-save | grep 27017

Reload and start Mongod daemon as below.

sudo systemctl daemon-reload
sudo systemctl start mongod.service

In case MongoDB fails to reload and start it using:

sudo systemctl daemon-reload
sudo systemctl start mongod

That is it! We have concluded this guide on how to install MongoDB 5.0 on CentOS 8/7 & RHEL 8/7. we have also seen how to create users with roles, add databases to MongoDB e.t.c. I hope you found this guide helpful.

See more guides:

MongoDB Udemy Video courses


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK