MongoDB is a document database with scalability and flexibility in mind. It is a distributed database at its core – so scaling and high availability are built in and easy to use.
Run MongoDB on Docker
Warning
Make sure you have Docker installed on the machine.
Check the official MongoDB image details on the dockerhub at the link below-
Run the following command-
docker run --name bigboxcode-mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=bigboxuser -e MONGO_INITDB_ROOT_PASSWORD=bigboxpass -d mongo:latest
Here are the details of arguments used in the command-
Argument | Description |
---|---|
–name bigboxcode-mongo | Use the –name argument to give the container a custom name. Here we have named it “bigboxcode-mongo“. |
-p 27017:27017 | Use the -p for mapping the container port to the host machine port. We are doing this, so that we can connect our MongoDB client to the server. Passed values should be in the format {host_port}:{container_port}. Here we have mapped the same port 27017 from the container to the host. But if you want to map some different(because of not availability) port of your host, say 27018, then pass it as -p 27018:27017. The port of the container will always be 27017. |
-e MONGO_INITDB_ROOT_USERNAME=bigboxuser | Pass an environment variable using -e. Here the name of the environment variable is MONGO_INITDB_ROOT_USERNAME. The value is “bigboxuser“, so the username will be “bigboxuser“. |
-e MONGO_INITDB_ROOT_PASSWORD=bigboxpass | Pass an environment variable using -e. Here the name of the environment variable is MONGO_INITDB_ROOT_PASSWORD. The value is “bigboxpass“, so the username will be “bigboxpass“. |
-d | This runs the container in detached mode. This way the command will run in the background and the terminal will be free to use. |
mongo:latest | This indicates two things- the first part before the colon (:) is “mongo” which is the image name. The second part after the colon(:) is “latest” this is the tag that is related to the version and distribution. Here we are running the latest version available of the “mongo” image on docker. If you want to use any other version choose a different tag, ie. “mongo:4.4.26“ |
You can choose a different username and password. After running this command the docker container will run and we can connect to the MongoDB container using our preferred client through port 27017 (or your defined port in the command.
Use the following command to run the docker container for later usage-
docker start bigboxcode-mongo
Install on Ubuntu
Use the following command to import the MongoDB public GPG Key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
Then use the following command:
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
Run following command for getting the updates:
sudo apt-get update
Then install the MongoDB using command:
sudo apt-get install -y mongodb-org
You can restart the service by using:
sudo service mongod restart
To start use:
sudo service mongod start
And to stop:
sudo service mongod stop
To enable the service after reboot:
sudo systemctl enable mongodb
Now open /etc/systemd/system/mongodb.service file in any editor. Like, to edit it with vim use following command.
sudo vim /etc/systemd/system/mongodb.service
Add following lines to the file /etc/systemd/system/mongodb.service:
#Unit contains the dependencies to be satisfied before the service is started.
[Unit]
Description=MongoDB Database
After=network.target
Documentation=https://docs.mongodb.org/manual
# Service tells systemd, how the service should be started.
# Key `User` specifies that the server will run under the mongodb user and
# `ExecStart` defines the startup command for MongoDB server.
[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
# Install tells systemd when the service should be automatically started.
# `multi-user.target` means the server will be automatically started during boot.
[Install]
WantedBy=multi-user.target
Enable authentication
Use following commands to access mongo db:
mongo
Switch to ‘admin’ database:
use admin
Use following command to create your user: (set your password in place of ’test pass’)
db.createUser({user:"admin", pwd:"testpass", roles:[{role:"root", db:"admin"}]})
Update file /etc/systemd/system/mongodb.service with following line:
ExecStart=/usr/bin/mongod --quiet --auth --config /etc/mongod.conf
Update /etc/mongodb.conf with following line
security:
authorization: enabled
Restart mongoldb service, and you are done.
If you want to enable remote access– then open file /etc/mongod.conf and make changes in following lines:
net:
port: 27017
bindIp: 0.0.0.0 #This will make the server available from any ip. To restrict access from specific IP, set that IP here