Saturday, January 4, 2020

Fedora 31 : Install MongoDB on Fedora 31 distro.

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
...