MongoDB: невозможно подключиться с удаленного компьютера - PullRequest
0 голосов
/ 11 сентября 2018

Возможно, дубликат здесь , но не смог найти правильный ответ, поэтому задавал вопрос.

Итак, у меня есть настройка mongodb на моем локальном компьютере, скажите M1, где запущена служба mongo, а в базе данных есть некоторые данные.

Теперь я хочу подключиться к этому mongodb с помощью клиента mongo на другом компьютере, скажем M2, но не могу.

После всех ответов я попытался добавить адрес M2 в файл mongodb.conf, но безуспешно.

net:
   bindIp: [m2.some.valid.ip,127.0.0.1]

Я даже пытался дать 0.0.0.0, но все равно не повезло. С localhost я могу подключиться с моей собственной машины, но если я упомяну адрес M1 и попытаюсь локально с этим адресом, я получу

Cannot connect to Mongo DB at M1 address, network is unreachable.

утра здесь сильно застряли. Только что начали с mongodb, так что извините за любой вопрос новичка.

Все мои сервисы mongo запущены и работают, и я могу получить доступ к данным с помощью терминала или любого клиента mongo на localhost.

Это журнал, когда я запускаю команду mongod на терминале:

2018-09-11T11:14:13.977+0530 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2018-09-11T11:14:13.993+0530 I CONTROL  [initandlisten] MongoDB starting : pid=11307 port=27017 dbpath=/data/db 64-bit host=DELC02S5E2CG8WN.sea.corp.expecn.com
2018-09-11T11:14:13.993+0530 I CONTROL  [initandlisten] db version v4.0.2
2018-09-11T11:14:13.993+0530 I CONTROL  [initandlisten] git version: fc1573ba18aee42f97a3bb13b67af7d837826b47
2018-09-11T11:14:13.993+0530 I CONTROL  [initandlisten] allocator: system
2018-09-11T11:14:13.993+0530 I CONTROL  [initandlisten] modules: none
2018-09-11T11:14:13.993+0530 I CONTROL  [initandlisten] build environment:
2018-09-11T11:14:13.993+0530 I CONTROL  [initandlisten]     distarch: x86_64
2018-09-11T11:14:13.993+0530 I CONTROL  [initandlisten]     target_arch: x86_64
2018-09-11T11:14:13.993+0530 I CONTROL  [initandlisten] options: {}
2018-09-11T11:14:13.993+0530 I STORAGE  [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-09-11T11:14:13.993+0530 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=7680M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2018-09-11T11:14:14.698+0530 I STORAGE  [initandlisten] WiredTiger message [1536644654:698414][11307:0x7fff8fb43380], txn-recover: Main recovery loop: starting at 2/7040
2018-09-11T11:14:14.792+0530 I STORAGE  [initandlisten] WiredTiger message [1536644654:792304][11307:0x7fff8fb43380], txn-recover: Recovering log 2 through 3
2018-09-11T11:14:14.856+0530 I STORAGE  [initandlisten] WiredTiger message [1536644654:856010][11307:0x7fff8fb43380], txn-recover: Recovering log 3 through 3
2018-09-11T11:14:14.904+0530 I STORAGE  [initandlisten] WiredTiger message [1536644654:904754][11307:0x7fff8fb43380], txn-recover: Set global recovery timestamp: 0
2018-09-11T11:14:15.037+0530 I RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] 
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] 
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server. 
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] **          Start the server with --bind_ip <address> to specify which IP 
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] **          addresses it should serve responses from, or with --bind_ip_all to
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] **          bind to all interfaces. If this behavior is desired, start the
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] **          server with --bind_ip 127.0.0.1 to disable this warning.
2018-09-11T11:14:15.103+0530 I CONTROL  [initandlisten] 
2018-09-11T11:14:15.157+0530 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2018-09-11T11:14:15.161+0530 I NETWORK  [initandlisten] waiting for connections on port 27017

mongodb версия db version v4.0.2 и я использую Mac.

Кроме того, когда я связываю ip своей M2 машины и делаю mongo --host m2.address, я получаю это:

mongo --host m2.address
MongoDB shell version v4.0.2
connecting to: mongodb://m2.address:27017/
2018-09-11T11:31:07.186+0530 E QUERY    [js] Error: couldn't connect to server m2.address:27017, connection attempt failed: SocketException: Error connecting to m2.address:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:257:13
@(connect):1:6
exception: connect failed

UPDATE

Вот шаги, которые я выполняю перед подключением:

  1. Запуск mongodb service: запуск brew services mongodb
  2. Запустите mongod, введя команду mongod
  3. Использование Robo3T для создания подключения, указав 0.0.0.0 в качестве адреса подключения. Пробовал конкретный адрес, а также.
  4. Все сообщения об ошибке «Сеть недоступна».

Дайте мне знать, если при запуске отсутствуют какие-либо параметры или я что-то не так делаю.

1 Ответ

0 голосов
/ 11 сентября 2018

После всех ответов я попытался добавить адрес M2 в файл mongodb.conf, но безуспешно.

Это неправильно. net.bindIp содержит список интерфейсов M1, которые прослушивает сервер, поэтому для подключения M2 к M1 net.bindIp должен иметь IP-адрес M1.

Кроме того, когда я связываю ip своей машины M2 и делаю mongo --host m2.address, я получаю это:

Это неправильно. Параметр --host должен иметь IP-адрес сервера - в вашем случае M1.

Использование Robo3T для создания соединения с указанием 0.0.0.0

Это не имеет смысла. 0.0.0.0 не является действительным IP-адресом вообще. Его можно использовать в качестве подстановочного значения для net.bindIp в mongodb.conf на M1, чтобы сервер прослушивал все доступные интерфейсы. Robo3T является клиентом, и для подключения к нему необходимо указать IP-адрес сервера.

На M1 (сервер):

  • набор net.bindIp: 0.0.0.0
  • перезапустить mongod

На M2 (клиент):

  • подключиться к серверу: mongo --host m1.address

Поиск и устранение неисправностей:

  1. Убедитесь, что mongodb запущен и работает на M1 - команда запуска sudo lsof -i | grep mongod. Он должен напечатать хотя бы 1 процесс с чем-то вроде TCP *:27017 (LISTEN)
  2. Если p1 работает, убедитесь, что сеть в порядке, и никакие брандмауэры не блокируют соединение - на M2 выполните telnet m1_ip 27017 Это должно дать вам что-то вроде Escape character is '^]'.
...