How to Perform Common Administrative Tasks in MongoDB¶
Connecting to the Shell¶
To connect to the MongoDB
shell, simply type mongo
as a sudo
user.
[root@~]# mongo
MongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("2d22b941-8fbf-4fe3-99ed-a52678e22097") }
MongoDB server version: 4.4.1
---
...
>
To exit the shell, type exit
Connecting with Authentication¶
To connect to the MongoDB
shell with a specific user, use the following syntax
[root@~]# mongo -u YOURUSER -p --authenticationDatabase admin
Creating a database¶
If a database does not exist, MongoDB will automatically create the database when you try to use it.
> use authors
switched to db authors
Though the database doesn’t officially exist until you insert data, as below.
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> db.authors.insert({ authorname: "Ursula K. Le Guin"})
WriteResult({ "nInserted" : 1 })
> show dbs
authors 0.000GB
admin 0.000GB
config 0.000GB
local 0.000GB
> db.authors.find()
{ "_id" : ObjectId("5f60a43e73116436bea8c0a4"), "authorname" : "Ursula K. Le Guin" }
Enabling Remote Access¶
Warning
Always ensure that the bind address for MongoDB is restricted on your firewall.
To connect to MongoDB
from a remote location, you will need to ensure that the bind address is amended to your required IP Address.
As a
sudo
user, edit theMongoDB
configuration file to specify the bind address. In this example, we are binding this to12.34.56.78
.
[root@ ~]# vi /etc/mongod.conf
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,12.34.56.78
# Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
Restart the service
[root@]# systemctl restart mongod
Note
You may also need to ensure that port 27017 is open to your required location on your software firewall. This falls outside the scope of this tutorial.
Changing the Assigned Port¶
Warning
Always ensure that the assigned port for MongoDB is restricted on your firewall.
To change the MongoDB
to something non-standard, away from 27017
, you will need to edit your MongoDB
configuration file:
As a
sudo
user, edit theMongoDB
configuration file to specify your new port number.
[root@ ~]# vi /etc/mongod.conf
# network interfaces
net:
# port: 27017
port: 27018
Restart the service
[root@]# systemctl restart mongod
Note
You may also need to ensure that port 27017
is open to your required location on your software firewall. This falls outside the scope of this tutorial.
Troubleshooting¶
Error Logging¶
MongoDB
logs to the following file upon startup and shutdown, and so is a good place to start when diagnosing startup errors.
/var/log/mongodb/mongod.log
Permissions¶
Typically, file ownership and permissions can trip up a MongoDB installation. Be sure to check that the MongoDB
data directory is owned by the mongod
user.
[root@ ~]# stat /var/lib/mongo
File: '/var/lib/mongo'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd02h/64770d Inode: 669 Links: 4
Access: (0755/drwxr-xr-x) Uid: ( 977/ mongod) Gid: ( 971/ mongod
If this is not owned by the mongod
user, you can correct this with the following command as a sudo
user.
[root@ ~]# chown -R mongod: /var/lib/mongo
If using SELinux
in enforcing mode, you will need to ensure that the correct SELinux
policy is set using the following documentation