Я хочу экспортировать некоторые данные из MongoDB Atlas.
Если я выполню приведенную ниже команду, она попытается подключиться localhost
и экспортировать данные.
mongoexport --uri="mongodb+srv://<username>:<password>@name-of-project-x2lpw.mongodb.net/test" --collection users --out /tmp/testusers.json
Примечание: Если вы запустите эту команду из Windows CMD, она будет работать нормально
После исследования проблемы и с с помощью пользователя, все, кажется, указывает на проблему DNS и на связанный файл resolv.conf
.
Ниже оригинального /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
В начале, которое привело к сбой соединения, как показано ниже:
Но если бы я изменил этот адрес на следующий общедоступный c доступный адрес в соответствии с рекомендациями этого сообщения до 1.1.1.1
соединение установлено, см. ниже:
# 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
, что привело к успешному соединению, как показано ниже:
ОДНАКО проблема в том, что вместо явного подключения к имени кластера MongoDB
он будет подключаться к localhost
, что очень странно, поскольку я успешно экспортировал искомые файлы из реального соединения. Что означает , что машина правильно подключалась к базе данных, но через localhost
.
Кажется, что все идет вперед, также согласно этому источнику , а также здесь к проблеме DNS при подключении к MongoDB
через терминал для экспорта коллекций. Теперь из этого последнего поста не рекомендуется вручную изменять этот адрес по нескольким причинам, поэтому сразу после успешного экспорта данных с помощью DNS 1.1.1.1
я изменил его обратно на исходный DNS 127.0.0.53
. Однако я не думаю, что это должно быть правильным поведением, поскольку каждый раз, когда мне нужно экспортировать данные, мне придется постоянно и вручную менять этот адрес.
В чем может быть причина этого странного поведения? И поэтому, что может быть долгосрочным решением без ручного переключения между DNS-адресами?
Спасибо за указание правильного направления для решения этой проблемы.