Не удалось подключиться к mongo на удаленном сервере

Я установил mongo на machine1 (Ubuntu 14.04.3 LTS server) в своей локальной сети. Я также открыл порт 27017, как указано в этом руководстве, используя следующие команды:

sudo iptables -A INPUT -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT  -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

Текущие правила: (iptables -L):

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:27017 state NEW,ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:27017 state ESTABLISHED

Но я не могу подключиться к этому порту с machine2 (в той же сети):

$ mongo --host 192.168.0.108
MongoDB shell version: 3.0.4
connecting to: 192.168.0.108:27017/test
2016-01-23T18:02:14.848+0530 W NETWORK  Failed to connect to 192.168.0.108:27017, reason: errno:61 Connection refused
2016-01-23T18:02:14.850+0530 E QUERY    Error: couldn't connect to server 192.168.0.108:27017 (192.168.0.108), connection attempt failed
    at connect (src/mongo/shell/mongo.js:181:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed

Я также попытался проверить, открыт ли порт:

$ nc -v 192.168.0.108 27017
nc: connectx to 192.168.0.108 port 27017 (tcp) failed: Connection refused

Я не уверен, что мне не хватает. Должна быть какая-то глупая ошибка, поскольку я настраиваю монго в первый раз. Помощь Pls.

Обновление (для сомнений, возникающих в текущих ответах)

  • Да, он работает. Я могу подключиться к mongo из одной машины, но не с другой машины. Демон запущен: $ service mongod status mongod start/running, process 31205 и порт 27017 $ sudo netstat -tulpn |grep 27017 tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 31205/mongod
  • Я изменил bind_ip на 0.0.0.0 и перезапустил монго. По-прежнему происходит такая же ошибка.

Mongo logs:

$ cat /var/log/mongodb/mongod.log
2016-01-23T16:28:13.155+0530 I CONTROL  [initandlisten] MongoDB starting : pid=31205 port=27017 dbpath=/var/lib/mongodb 64-bit host=dexter
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] db version v3.2.1
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] git version: a14d55980c2cdc565d4704a7e3ad37e4e535c1b2
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] allocator: tcmalloc
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] modules: none
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] build environment:
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten]     distmod: ubuntu1404
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten]     distarch: x86_64
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten]     target_arch: x86_64
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2016-01-23T16:28:13.173+0530 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=1G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten]
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten]
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten]
2016-01-23T16:28:14.444+0530 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/mongodb/diagnostic.data'
2016-01-23T16:28:14.444+0530 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-01-23T16:28:14.949+0530 I NETWORK  [initandlisten] waiting for connections on port 27017
2016-01-23T16:38:37.046+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37032 #1 (1 connection now open)
2016-01-23T16:39:31.447+0530 I NETWORK  [conn1] end connection 127.0.0.1:37032 (0 connections now open)
2016-01-23T16:49:24.240+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37033 #2 (1 connection now open)
2016-01-23T16:49:38.249+0530 I NETWORK  [conn2] end connection 127.0.0.1:37033 (0 connections now open)
2016-01-23T16:51:51.707+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37034 #3 (1 connection now open)
2016-01-23T16:51:55.785+0530 I NETWORK  [conn3] end connection 127.0.0.1:37034 (0 connections now open)
2016-01-23T17:32:15.546+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37036 #4 (1 connection now open)
2016-01-23T17:32:21.180+0530 I NETWORK  [conn4] end connection 127.0.0.1:37036 (0 connections now open)
2016-01-23T18:11:57.885+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37037 #5 (1 connection now open)
2016-01-23T18:29:55.365+0530 I NETWORK  [conn5] end connection 127.0.0.1:37037 (0 connections now open)

Ответ 1

Проблема была bindIp не изменилась. Возникла некоторая проблема в перезапуске монго с моей стороны.

Привычка должна проверять, действительно ли bindIp изменился или нет. (используя sudo netstat -tulpn | grep 27017)

Ответ 2

убедитесь, что демон mongodb запущен и прослушивает 0.0.0.0, но не 127.0.0.1 порт

например, для моего локального mongodb, он имеет эту конфигурацию:

[[email protected] ~]$ cat /etc/mongod.conf 
##
### Basic Defaults
##

# Comma separated list of ip addresses to listen on (all local ips by default)
bind_ip = 127.0.0.1

# Specify port number (27017 by default)
#port = 27017

для сервера mongodb для прослушивания удаленных подключений вы можете изменить

# Comma separated list of ip addresses to listen on (all local ips by default)
bind_ip = 0.0.0.0

Ответ 3

В версии 3.6.4 сервера mongoDB Ubuntu 16.4.4 я решил эту проблему, установив раздел net в /etc/mongod.conf следующим образом:

net:
  port: 27017
  bindIpAll: true
#  bindIp: 127.0.0.1

Ответ 4

Убедитесь, что на вашем компьютере есть демон, который прослушивает порт 27017. Мы получили ту же ошибку и обнаружили, что демон не запущен.

Ответ 5

Я выполнил несколько настроек на своем Ubuntu 18 Vagrant, чтобы успешно подключить MongoDB удаленно с помощью Robo 3T GUI. Я объяснил в следующих шагах.

  1. На сервере Ubuntu, чтобы открыть оболочку mongo, запустите:
    $ mongo
    
  2. Внутри оболочки Монго введите следующую команду, чтобы создать нового пользователя с правами администратора.

    > use admin;
    > db.createUser({user:"admin", pwd:"password", roles:[{ role: "root", db: "admin" }]});
    
  3. По умолчанию mongodb настроен на разрешение соединений только с локального хоста (IP 127.0.0.1). Нам нужно разрешить удаленные подключения с любого IP-адреса. Следующее изменение должно быть сделано только на вашем сервере разработки. Откройте файл etc/mongod.conf и внесите следующие изменения.

    # network interfaces
        net:
            port: 27017
            bindIp: 0.0.0.0   #default value is 127.0.0.1
    

    Также в том же параметре безопасности uncomment файла mongod.conf и добавьте параметр авторизации, как показано ниже.

    security:
        authorization: enabled
    
  4. Сохраните и выйдите из файла mongod.conf и перезапустите сервер mongodb.

    $ sudo servcie mongod restart
    
  5. Загрузите и установите Robo 3T GUI tool.

  6. В графическом интерфейсе Robo 3T в настройках подключения необходимо внести несколько изменений, как показано на снимках экрана ниже.

enter image description here

Введите имя пользователя и пароль базы данных mongodb admin, которые вы создали ранее.

enter image description here

Здесь я ввел свои ssh Ubuntu 18 Vagrant box.

enter image description here

Сохраните изменения и нажмите значок подключения, чтобы увидеть, работает ли подключение нормально.