MongoDB: DNS issue of resolv.conf connecting to MongoDB

痴心易碎 提交于 2020-03-04 20:05:09

问题


I want to export some data from MongoDB Atlas.

If I execute the command below, It tries connect localhost and export the data.

mongoexport --uri="mongodb+srv://<username>:<password>@name-of-project-x2lpw.mongodb.net/test" --collection users --out /tmp/testusers.json

Note: If you run this command from Windows CMD, it works fine

After researching the problem and with the help of a user, everything seems to point to a DNS problem and to the related resolv.conf file.

Below the original /etc/resolv.conf:

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0
search name.com

At the beginning that resulted into a connection failure as shown below:

But if I would change that address into the following public available address according to what advised on this post to 1.1.1.1 the connection is successful, see below:

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 1.1.1.1
options edns0
search name.com

Which resulted into a connection success as shown below:

HOWEVER the problem is that instead of explicitly connecting to the name of the MongoDB cluster, it will connect to the localhost, which is very strange as I successfully exported the files I was looking for from the real connection. Which means that the machine was correctly connecting to the database but via localhost.

Everything seems to lead, also according to this source and also here to a DNS problem while connecting to MongoDB via terminal to export collections. Now from this last post it not advisable to manually change this address for several reasons, therefore right after successfully exporting the data using DNS 1.1.1.1 I changed it back to its original DNS 127.0.0.53. However I don't think this should be a proper behavior as every time I need to export data I will have to continuously and manually change this address.

What could be the reason for this strange behavior? And therefore what could be a long term solution without manually switching between DNS addresses?

Thanks for pointing to the right direction for solving this issue.

来源:https://stackoverflow.com/questions/60339320/mongodb-dns-issue-of-resolv-conf-connecting-to-mongodb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!