MONGO DB

2 minute read

MONGO DB WALKTHROUGH FOR UBUNTU

cf : tuto Mongo DB / install cf : tuto Digital Ocean / install

INSTALL MONGO DB

install MongoDB package (-y == —yes == —assume-yes)

sudo apt update
sudo apt install -y mongodb

check service status

sudo systemctl status mongodb
mongo --eval 'db.runCommand({ connectionStatus: 1 })'

optionnel : stop/start/restart MongoDB service

  sudo systemctl stop mongodb
  sudo systemctl start mongodb
  sudo systemctl restart mongodb

By default, MongoDB is configured to start automatically with the server. If you wish to disable/enable the automatic startup, type:

sudo systemctl disable mongodb
sudo systemctl enable mongodb

UNINSTALL

  • cf : https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
sudo systemctl stop mongodb
sudo apt-get purge mongodb-*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

optionnal : allow an external IP to connect to MongoDB’s ports

sudo ufw allow from YOUR.LOCAL.IP.ADDRESS/32 to any port 27017  

add your server’s publicly-routable IP address to the mongod.conf file

sudo nano /etc/mongodb.conf

let this : restrict to local interface

remote connection to db are prohibited except via SSH tunnel

logappend=true

# bind_ip = 127.0.0.1
bind_ip = 127.0.0.1,YOUR.SERVER.IP.ADDRESS
# bind_ip = 0.0.0.0
#port = 27017

restart service

sudo systemctl restart mongodb

optional : enable automatically starting MongoDB when the system starts

sudo systemctl enable mongod
sudo systemctl stop mongod
sudo systemctl start mongod
sudo systemctl restart mongod
sudo systemctl status mongod

SECURE CONNEXION

cf : tuto Digital Ocean / secure connexion cf : tuto Mongo DB

run MongoDB

mongo

in mongo CLI

use admin

db.createUser({user:"AdminMongo",pwd:"A_MONGO_DB_ADMIN_PWD",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

db.createUser({user:"RootJpy",pwd:"A_MONGO_DB_ADMIN_PWD",roles:[{role:"root",db:"admin"}]})

Type ‘exit’ and press ENTER or use CTRL+C to leave the client.


cf : tuto mongo DB on Ubuntu

add —auth to service

sudo nano /lib/systemd/system/mongodb.service 

correct/add this line

ExecStart=/usr/bin/mongod --auth --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS

systemctl daemon-reload

OR


cf : tuto Digital Ocean / secure

enable security

sudo nano /etc/mongodb.conf

Turn on/off security. Off is currently the default

#noauth = true
auth = true

restart service

sudo systemctl restart mongodb
sudo systemctl status mongod

test access

mongo
show dbs

—> must show error like :

2019-01-18T22:07:43.656+0000 E QUERY    [thread1] Error: listDatabases failed:{
	"ok" : 0,
	"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0, $db: \"admin\" }",
	"code" : 13,
	"codeName" : "Unauthorized"
} :

run mongo with admin user

mongo -u AdminMongo -p --authenticationDatabase admin

—> enter password : A_MONGO_DB_ADMIN_PWD

show dbs 

test from local terminal

mongo -u AdminMongo -p --authenticationDatabase admin --host XXX.XXX.XXX.XX

create an user for solidata db —> this guy must be added in config_prod.py (secret) in solidata_backend

use solidata
db.createUser({user:"AdminDB",pwd:"A_MONGO_DB_USER_PWD",roles:[{role:"readWrite",db:"solidata"}]})

CONCLUSION

THAT WAY DB IS PROTECTED BY :

  • AdminDB + MANDATORY PWD TO CONNECT AND CREATE USERS
  • AdminDB USER + MANDATORY PWD TO CONNECT TO CB
  • SSH TUNNEL MANDATORY + PASSPHRASE TO CONNECT TO SERVER OR DB
  • UFW ONLY ALLOWS SERVER IP AND DEV IP TO ACCESS PORT 2017
  • no other way to connect ?…