Today I will show you how to install the MongoDB on Fedora 31 distro.
MongoDB is a general-purpose, document-based, distributed database built for modern application developers and for the cloud.
You can see the source code for MongoDb at
the GitHub website.
First, you need to create a repository file.
[mythcat@desk ~]$ su
Password:
[root@desk mythcat]# vi /etc/yum.repos.d/mongodb.repo
Add the code for this repository file.
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8Server/mongodb-org/testing/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
Let's search this Fedora apckage with
dnf tool
[root@desk mythcat]# dnf search mongodb-org
MongoDB Repository 5.8 kB/s | 6.5 kB 00:01
=========================== Name Exactly Matched: mongodb-org ============================
mongodb-org.x86_64 : MongoDB open source document-oriented database system (metapackage)
=============================== Name Matched: mongodb-org ================================
mongodb-org-shell.x86_64 : MongoDB shell client
mongodb-org-tools.x86_64 : MongoDB tools
mongodb-org-mongos.x86_64 : MongoDB sharded cluster query router
mongodb-org-server.x86_64 : MongoDB database server
[root@desk mythcat]# dnf install mongodb-org.x86_64
Last metadata expiration check: 0:01:46 ago on Fri 03 Jan 2020 05:27:49 PM EET.
Dependencies resolved.
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
mongodb-org x86_64 4.2.2-0.1.rc1.el8 mongodb-org-4.2 10 k
Installing dependencies:
mongodb-org-mongos x86_64 4.2.2-0.1.rc1.el8 mongodb-org-4.2 14 M
mongodb-org-server x86_64 4.2.2-0.1.rc1.el8 mongodb-org-4.2 25 M
mongodb-org-shell x86_64 4.2.2-0.1.rc1.el8 mongodb-org-4.2 17 M
mongodb-org-tools x86_64 4.2.2-0.1.rc1.el8 mongodb-org-4.2 47 M
Transaction Summary
==========================================================================================
Install 5 Packages
Total download size: 103 M
Installed size: 260 M
Is this ok [y/N]: y
...
From : https://www.mongodb.org/static/pgp/server-4.2.asc
Is this ok [y/N]: y
Key imported successfully
...
Installed:
mongodb-org-4.2.2-0.1.rc1.el8.x86_64 mongodb-org-mongos-4.2.2-0.1.rc1.el8.x86_64
mongodb-org-server-4.2.2-0.1.rc1.el8.x86_64 mongodb-org-shell-4.2.2-0.1.rc1.el8.x86_64
mongodb-org-tools-4.2.2-0.1.rc1.el8.x86_64
Complete!
Start and enable MongoDB service to start on boot.
[root@desk mythcat]# systemctl start mongod
[root@desk mythcat]# sudo systemctl enable mongod
[root@desk mythcat]# systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabl>
Active: active (running) since Fri 2020-01-03 17:32:36 EET; 17s ago
Docs: https://docs.mongodb.org/manual
Main PID: 9019 (mongod)
Memory: 71.0M
CPU: 890ms
CGroup: /system.slice/mongod.service
└─9019 /usr/bin/mongod -f /etc/mongod.conf
Jan 03 17:32:34 desk systemd[1]: Starting MongoDB Database Server...
Jan 03 17:32:34 desk mongod[9017]: about to fork child process, waiting until server is r>
Jan 03 17:32:34 desk mongod[9017]: forked process: 9019
Jan 03 17:32:36 desk mongod[9017]: child process started successfully, parent exiting
Jan 03 17:32:36 desk systemd[1]: Started MongoDB Database Server.
Jan 03 17:32:47 desk systemd[1]: /usr/lib/systemd/system/mongod.service:16: PIDFile= refe>
...
Use the netstat utility to confirm that indeed Mongod service is listening.
[root@desk mythcat]# netstat -pnltu | grep mongo
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 9019/mongod
Create an admin user with elevated privileges to perform elevated tasks.
[root@desk mythcat]# mongo
MongoDB shell version v4.2.2-rc1
...
> use admin
switched to db admin
> db.createUser(
... {
... user: "admin",
... pwd: "123",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
Show the users:
> show users
{
"_id" : "admin.admin",
"userId" : UUID("5ca3a1c2-6225-4158-b2bc-e32e5e5de58f"),
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
To enable authentication edit the /lib/systemd/system/mongod.service file, under the [Service] section, locate and edit the Environment parameter as shown.
[root@desk mythcat]# vim /lib/systemd/system/mongod.service
...
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
User=mongod
Group=mongod
Environment="OPTIONS= --auth -f /etc/mongod.conf"
...
Apply the changes to the service mongo unit.
[root@desk mythcat]# systemctl daemon-reload
[root@desk mythcat]# systemctl restart mongod
[root@desk mythcat]# systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disable>
Active: active (running) since Fri 2020-01-03 17:44:09 EET; 11s ago
Docs: https://docs.mongodb.org/manual
Process: 9272 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUC>
Process: 9273 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, s>
Process: 9274 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/S>
Process: 9275 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 9277 (mongod)
Memory: 168.3M
CPU: 1.423s
CGroup: /system.slice/mongod.service
└─9277 /usr/bin/mongod --auth -f /etc/mongod.conf
...