MongoDB is a NoSQL database that stores data as JSON-like documents. Documents store related information together and use the MongoDB query language (MQL) for access and it is also called GriddFS which performs load balancing and data replication features over multiple machines for storing files.
Installing MongoDB
Before installing MongoDB, we need to add a repository manually since it is not present in the default repository.
Create a repository file using the following command.
# vi /etc/yum.repos.d/mongodb.repo
And the following line and save 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
Enter the following command to install MongoDB.
dnf install -y mongodb-org
Next, Start and Enable the MongoDB.
systemctl start mongod
systemctl enable mongod
Command to Verify the MongoDB.
systemctl status mongod
Output:
[root@vps ~]# systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; enab>
Active: active (running) since Mon 2021-10-25 13:36:18 EDT; >
Docs: https://docs.mongodb.org/manual
Process: 57055 ExecStart=/usr/bin/mongod $OPTIONS (code=exite>
Process: 57053 ExecStartPre=/usr/bin/chmod 0755 /var/run/mong>
Process: 57051 ExecStartPre=/usr/bin/chown mongod:mongod /var>
Process: 57050 ExecStartPre=/usr/bin/mkdir -p /var/run/mongod>
Main PID: 57058 (mongod)
Memory: 156.6M
CGroup: /system.slice/mongod.service
└─57058 /usr/bin/mongod -f /etc/mongod.conf
MongoDB Shell
Command to access MongoDB’s shell.
mongo
Note: You will receive the following output when you enter the MongoDB shell for the first time.
Output:
[root@vps ~]# mongo
MongoDB shell version v5.0.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("283a2949-15c6-413e-a0f2-6aa95c1bae3a") }
MongoDB server version: 5.0.3
================
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/
================
Creating MongoDB Admin User
Enter into MongoDB shell.
mongo
Command to switch to the database admin by running.
> use admin
Create an Admin user by running the following code.
Note: Replace a
Enter-A-user-Here
with a username andEnter-A-Password-Here
with a strong and secure password.
> db.createUser(
{
user: "Enter-A-user-Here",
pwd: "Enter-A-Password-Here",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Output:
Successfully added user: {
"user" : "Enter-A-user-Here",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
>
Run the following command to list MongoDB users.
> show users
Output:
> show users
{
"_id" : "admin.Enter-A-user-Here",
"userId" : UUID("8e2d9f07-e5a0-439c-9893-9fbe1bb33c54"),
"user" : "Enter-A-user-Here",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
>
Authentication for MongoDB
Note: Since all users can access the shell and execute any commands this will cause security issues — we can prevent this by creating authentication for the admin user.
To enable authentication open the /lib/systemd/system/mongod.service
file and find the following line.
Environment="OPTIONS=-f /etc/mongod.conf"
and change to,
Environment="OPTIONS= --auth -f /etc/mongod.conf"
Save and exit the configuration file.
And restart MongoDB to reflect the changes.
systemctl restart mongod
Now you can try to list the user without authentication, you will receive an error
output:
> show users
uncaught exception: Error: command usersInfo requires authentication :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getUsers@src/mongo/shell/db.js:1635:15
shellHelper.show@src/mongo/shell/utils.js:933:9
shellHelper@src/mongo/shell/utils.js:838:15
@(shellhelp2):1:1
>
To authenticate, simply pass the credentials as shown.
db.auth('mongod_admin', 'YOUR-PASSWORD')
Note: Replace
YOUR-PASSWORD
with the actual password
Now you can run any command after that. Let’s try listing the users once more:
show users
Output:
{
"_id" : "admin.Enter-A-user-Here",
"userId" : UUID("8e2d9f07-e5a0-439c-9893-9fbe1bb33c54"),
"user" : "Enter-A-user-Here",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
To exit the database engine run.
exit