mongodb + remote access - mongodb

I've installed mongodb on Linux(CenOS) server as it's written in docs. But still remote access is impossible (although conecting from mongo shell locally is ok). Can someone provide docs on proper configuring of mongodb?
Thank you in advance!

Source: MongoDb setup config to connect by remote hosts
On ubuntu:
root#debian:$ sudo nano /etc/mongodb.conf
Make sure you have the following lines
bind_ip = 0.0.0.0
port = 27017
root#debian:$ /etc/init.d/mongodb restart

Either running behind a firewall or mongod is bound to localhost only (use --bind-ip option to configure the IP address if necessary).

Related

How to access Mongodb in AWS EC2 Ubuntu from my laptop [duplicate]

I've successfully installed MongoDB on Windows (on a local machine) as a service, but now I want to move MongoDb to a separate server. So I extracted the tarball to a virtual server on network (running linux).
When I connected to the server ("testmongoserver") using PuTTY from my local machine, I started the mongod server and it told me that it was listening to the default 28017 port. The mongo console is also working and allowed me to create a new database (testdb) and add users to it.
However, I could not access the server from remote. When I type testmongoserver:28017 it doesn't open the HTTP console as localhost:28017 on my local machine does. I also can't connect using official drivers and providing a connectionstring.
What are the neccesarry steps to install MongoDB on Linux, so that I could access it from a remote machine with a connectionstring and use its HTTP console via testmongoserver:28017
Thanks!
1. Bind IP option
Bind IP is a MongoDB option that restricts connections to specifics IPs.
Have a look at your mongod configuration file, most of the time bind_ip is set to 127.0.0.1 for obvious security reasons. You can:
Add your desired IP by concatenating a list of comma separated values to bind MongoDB to multiple IP addresses.
Remove or comment (with # character) the bind_ip line. But be aware that all remote connection will be able to connect your MongoDB server!
More about bind_ip configuration option: https://docs.mongodb.com/manual/reference/configuration-options/#net.bindIp
Bind IP can also be set as a command argument: http://docs.mongodb.org/manual/reference/program/mongod/#cmdoption--bind_ip
2. Firewall
Check that you are not running behind a firewall
Make sure in your /etc/mongodb.conf file you have the following line,
bind_ip = 0.0.0.0
http://jitu-blog.blogspot.com.br/2013/06/allow-mongo-to-connect-from-remote-ip.html
Run netstat -a on mongo server and check a port.
Check DNS settings and check that linux server allows external connections.
Check that mongodb can accept external/remote connection.
Default port for mongo is 27017.
28017 - port for webstats.
See http://www.mongodb.org/display/DOCS/Security+and+Authentication#SecurityandAuthentication-Ports
Just had this issue and this fixed it:
Edit /etc/mongod.conf with sudo nano /etc/mongod.conf ensure that the net section looks like below (localhost binding by default doesn't allow for remote access):
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
Make sure to restart mongod when you are done with above with below (assuming systemd ubuntu 16.04+ etc.):
sudo service mongod restart
Obviously from a security perspective if you are going to be opening up mongo to your network/the world be aware of the implications of this (if any)
Another problem may be that the mongodb port is not enabled. Check, from another host, the ports enabled on your server. For that you can use the command:
sudo nmap -P0 your_server_ip
You can get an answer like this:
Host is up (0.052s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp closed https
If you use a virtual server in the cloud, as AWS, you need to add a new rule to add mongodb port (27017 by default).
Important: Note that with this configuration anyone can have access to your database
I fixed by below reference :
https://medium.com/founding-ithaka/setting-up-and-connecting-to-a-remote-mongodb-database-5df754a4da89
Actually, first i changed my bindIp from 127.0.0.1 to 0.0.0.0 in mongod.conf,
and enable security:
security:
authorization: "enabled"
then i restarted mongod using sudo service mongod restart.(because of new changes in mongod.conf), after that set firewall to open mongod running port (by iptables) and create a new user in admin db with new access (based on this link : https://medium.com/mongoaudit/how-to-enable-authentication-on-mongodb-b9e8a924efac), finally test open ports in my server from outside with (https://www.yougetsignal.com/tools/open-ports/) and connected successfully to remote mongod using mongocompass.exe.

Unable to connect to MongDB through IP address

I have installed MongoDb 4.0 on Windows 10. MongoDB currently runs on 'localhost'. I am able to connect to MongoDB by using 'mongodb://localhost:27017' in my nodeJS. However, I have a need to access this MondoDB instance through IP address. So, if I access MondoDB using mongodb://193.168.16.1:27017, then I am not able to connect to it. I tried to connect through MongoDB atlas, but I am having the same problem.
I have gone through the following threads on stackoverflow before posting it here.
Bind MongoDB to IP address when running as Service
Windows mongodb server bind_ip configuration
I have already tried to change the bindIp in mongod.cfg with the following values, with no success. I restarted 'MongoDB server' service after making these changes.I have also enabled all connections on port 27017 in windows firewall
bindIpAll: true #no success
bindIp: 127.0.0.1,193.168.16.1 #no success
bindIp: 193.168.16.1 #no success
bindIp: 0.0.0.0 #no success
I think you need to start your mongodb server something like this,
mongod --bind_ip 0.0.0.0 -v
And now you will be able to connect to mongodb using ipAddress.
Firstly please kill MongoDB and run this:
mongod --bind_ip 0.0.0.0 -v
Then as you want to connect through IP so run this command:
mongo --host 193.168.16.1 --verbose
Hope this will solve your problem...
None of the above suggestions worked for me. One of the combinations that worked for me is as follows
bindIp: 0.0.0.0,192.168.16.1
I am not sure why other combinations are not working. It could possibly be due to some issue with the MogoDb service, because I had to restart the service twice to get it working.
For me, it was not reading the config file until I removed the service and created it again specifying the configuration file path.
mongod --remove
"C:\Program Files\MongoDB\Server\4.0\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg" --service
I had to comment #mp: at the end of the configuration file before I could run the service.

Can't access MongoDB 3.2.4 on CentOS 7 via 3T MongoChef

I installed MongoDB 3.2.4 on CentOS 7. I keep the default configure except comment the bindIp: 127.0.0.1 to access the db via 3T MongoChef 3.4.1 from local machine.
I create two new users for db admin. One is root and one is userAdmin.
I tried to access the db via 3T MongoChef but failed. If I leave the Authentication none, I would get this:
But if I set it :
then I get:
I have no idea how to fix this. Please help.
It seems like commenting the bindIp out is not enough to change the allowed inbound connections for mongod. Try to change it to 0.0.0.0 instead.
Also, check this post out: mongodb.conf bind_ip = 127.0.0.1 does not work but 0.0.0.0 works
Regards
In the production environment, lock the IP down to white list server and don't open up using `
0.0.0.0
To Whitelist IPs, modify the mongod.conf
vim /etc/mongod.conf
Add the IPs in the following format
[x.x.x.x,x.x.x.x]
Ex.
Save and cycle the Mongod
In RHEL;
systemctl restart mongod

Can't Access MongoDB instance hosted in Google Cloud VM from RoboMongo

I have created a project and deployed MEAN stack by using "Click to Deploy". When I visit <> / 3000 I do see the MEAN page coming from the server. Also I can ssh to that machine and see all the stuff there. I can access MongoDB instance in that way.
I also created a separate VM where I installed Node.JS and MongoDB myself. Both working similar way.
My problem is - I can't access either of the machines from my local RoboMongo Instance neither I can access them from local shell. I had similar issue in aws world and solution was to create security group to permit the mongodb port (27017). So I tried that and added "Firewall rule" under "Network" and allowed that port for all incoming traffics --> as bellow
mongodb communication from outside
Source Ranges:
0.0.0.0/0
Allowed Protocols or Ports:
tcp:27017
But the issue persists and I can't access the mongodb instance from robomongo or local shell.
Any idea ?
You should config bind_ip = 0.0.0.0 when start mongod
eg
mongod.conf as folowing
fork = true
bind_ip = 0.0.0.0
port = 27017
quiet = true
dbpath = /srv/mongodb
logpath = /var/log/mongodb/mongod.log
logappend = true
journal = true
and start mongo as this command
sudo mongod --config /etc/mongodb.conf
Now you can connect Mongo on Google cloud VM through external IP with 27017 as port.
I suggest that you check if your MongoDB is listening on port 27017 by running the following command:
sudo netstat -nap | grep 27017
I suggest also that you try to turn off your IP tables on the VM and try to access maybe a rule is blocking your access.
One thing also to check is your bindIp using db.serverCmdLineOpts()

Can't connect my mongoDB database from my local machine

UPDATED:
I just start to deal with a new VPS and i am trying to connect its port 27017 (mongodb database) from localhost (using robomongo).
It's working on my localhost machine and with another remote server, but i can't connect mongodb on this VPS, what could cause this issue ?
I start it this way:
mongod --setParameter enableLocalhostAuthBypass=0 --config /etc/mongodb.conf --fork
with the auth = true uncommented in the /etc/mongodb.conf file (but it looks like the issue is not that i can't auth but mongodb is not responding at all).
When i start mongo admin -u root -p root by being connected with SSH, it works great (i can connect my database) and i can see that mongodb is well listenning on the port 27017.
But when i try to access it from my local machine, it can't establish the connection, and if i try to connect it with my browser, i am supposed to get a mongodb error message: You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number but i don't, i just have a failure page with Chrome (and the port 28017 is not responding either).
How to solve this ? My VPS is brand new and i could need to install more packages but i really don't see what could be need for this, it also looks like a firewall issue, like something prevent mongodb and response before the request could reach it, i have juste installed apache2 and nginx and they are not running so i really don't see...
Ok, I have found the issue!
There is a line bind_ip 127.0.0.1 in the /etc/mongod.conf file.
It provides access only to the specified IP address to mongodb.
You should create an array of IPs and edit the config file as:
bind_ip [127.0.0.1, x.x.x.x, ...]
Where x.x.x.x is your IP.
i resolved this issue with file(/etc/mongod.conf)
commenting out as follows:
#bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.