복붙노트

[MONGODB] MongoDB를의 bind_ip은 설정하지 않으면 0.0.0.0으로 작동하지 않습니다

MONGODB

MongoDB를의 bind_ip은 설정하지 않으면 0.0.0.0으로 작동하지 않습니다

난 정말 심지어 MongoDB를 다시 설치했습니다.

그리고 MongoDB를 bind_ip 오류 동일합니다 : 바인드 () 실패의 errno : 99 소켓에 대한 요청 주소를 할당 할 수 없습니다

0.0.0.0 또는 127.0.0.1 : 그것은으로 설정된 경우의 bind_ip를 작동

$ sudo service mongod start
mongod start/running, process 30040
$ sudo service mongod restart
mongod stop/waiting
mongod start/running, process 29704
$ mongo --port 19708
MongoDB shell version: 3.0.3
connecting to: 127.0.0.1:19708/test
>

이 설정 bing_ip 경우에 작동하지 않습니다 127.0.0.1,192.118.96.10,42.112.36.110를

$ sudo service mongod start
mongod start/running, process 29969
$ sudo service mongod restart
stop: Unknown instance:
mongod start/running, process 29766
$ mongo --port 19708
MongoDB shell version: 3.0.3
connecting to: 127.0.0.1:19708/test
2015-06-17T06:32:34.625+0000 W NETWORK  Failed to connect to 127.0.0.1:19708
reason: errno:111 Connection refused
2015-06-17T06:32:34.627+0000 E QUERY
Error: couldn't connect to server   127.0.0.1:19708 (127.0.0.1), 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

위치 :

$ which mongod
/usr/bin/mongod
$ which mongo
/usr/bin/mongo

/etc/mongod.conf의 구성

dbpath=/var/lib/mongodb

logpath=/var/log/mongodb/mongod.log

logappend=true

port = 19708

# ips, eg:
# private ip for mongodb server: 192.118.96.10
# public ip for remote app server: 42.112.36.110

bind_ip = 127.0.0.1,192.118.96.10,42.112.36.110

auth = true

미리 감사드립니다.

해결법

  1. ==============================

    1.편집 : 나는 내 대답 또는 bind_ip의 행동이 변경된 경우 단순히 잘못인지는 모르겠지만, 그것은 여러 개의 서로 다른 IP와 결합 가능하다

    편집 : 나는 내 대답 또는 bind_ip의 행동이 변경된 경우 단순히 잘못인지는 모르겠지만, 그것은 여러 개의 서로 다른 IP와 결합 가능하다

    bind_ip:127.0.0.1,10.0.0.1,8.8.8.8
    

    그래서, 대부분의 IP 주소의 mongod 중 하나는 문제의 컴퓨터에 존재하지 않았다 바인딩에 할당되었다.

    당신은 "사용 가능한 모든 네트워크 인터페이스에서 수신 대기"에 대한 0.0.0.0 별칭 인으로, 하나의 IP에 mongod를 바인딩 할 수 있습니다.

    중 하나를 사용 그래서

    bind_ip=127.0.0.1
    

    루프 백 인터페이스를 들으려면 또는

    bind_ip=<someIP>
    

    그 IP를들을 만 나

    bind_ip=0.0.0.0
    

    시스템에서 사용 가능한 모든 IP를 듣습니다.

    여러 특정 IP를 경청해야하는 경우, 그것은 매우 가능성이 시스템 설계는 어떻게 든 나사된다는 점이다.

  2. ==============================

    2.난 그냥 때문에 어리석은 실수 같은 문제가 있었다.

    난 그냥 때문에 어리석은 실수 같은 문제가 있었다.

    주석 라인 및 공간 문제가 발생했습니다.

    내가 잘못했다

    # network interfaces
    net:
      port: 27017
     #bindIp: 127.0.0.1
    bindIp: privateIp
    

    대신에

    net:
      port: 27017
      bindIp: 10.1.2.4
    

    여러 IP와 바인딩에 대한

    bindIp: [127.0.0.1,10.128.0.2]
    

    잘하면 사람에게 도움이 대답.

  3. ==============================

    3.몽고 3.6.2 커뮤니티

    몽고 3.6.2 커뮤니티

    나를 위해이 솔루션은 /etc/mongod.conf의 섹션을 편집했다

    # network interfaces
    net:
      port: 27017
      bindIp: 127.0.0.1,192.168.1.240   # No brackets, No spaces, only comma separated
    
    #security
    

    그런 다음 다시 시작하고 서비스를 확인하기 위해 저장하고이 작업을 수행 :

    > service mongod restart
    > service mongod status
    

    여기에 어떤 실패는, 이제 누군가가 수신 확인하지 :

    > netstat -a |grep :27017
    
    tcp   0   0  yourhostname:27017   0.0.0.0:*     LISTEN
    tcp   0   0  localhost:27017      0.0.0.0:*     LISTEN
    

    이제 당신의 마음에 드는 몽고 도구 또는 명령 줄을 사용하여 연결합니다.

    /etc/mongod.conf 다른 형식의 일부 결과

  4. ==============================

    4.나는이 문제에 벽에 내 머리를 때리고 시간을 보냈다. 결국, 로그를보고 내가 발견 한 것은 인터넷 검색을하는 곳 저를 거기에 도착 (인터넷 검색을 할 때 모든 내가 가진 '몽고 bindIp multipl'(등) 도움이되지 않았다 답변이 같은 페이지의 부하가되었다). 첫째, 나를 위해 일한 것을 /etc/mongod.conf의 블록이었다 :

    나는이 문제에 벽에 내 머리를 때리고 시간을 보냈다. 결국, 로그를보고 내가 발견 한 것은 인터넷 검색을하는 곳 저를 거기에 도착 (인터넷 검색을 할 때 모든 내가 가진 '몽고 bindIp multipl'(등) 도움이되지 않았다 답변이 같은 페이지의 부하가되었다). 첫째, 나를 위해 일한 것을 /etc/mongod.conf의 블록이었다 :

    # network interfaces
    net:
      port: 27017
      bindIp: 127.0.0.1,172.16.1.2
    

    ...하지만 심지어와 공백, 따옴표, 아니 괄호는 올바른 다시 시작의 MongoDB의 오류를 포기하지 후 시작을 거부했다. 나는 (이 라인의 정확성이 실제로 문제가 해결되지 않았고 내가 다른 있다는 것을 인식하지 못하고 이후 실망) 잘못되었습니다 다양한 구성을 시도하는 시간을 보냈다.

    나는 MongoDB를 소켓 파일을 삭제하여 그것을 해결 할 수 있었다 :

    rm /etc/mongodb-27017.sock 
    

    이 후, 실행

    systemctl restart mongod
    

    오류없이 작동했다. 흥미로운 것은 그냥 127.0.0.1에 bindIP를 다시 설정하고 다시 시작하면 시행 착오 과정에서 그 것이었다 (정말 실망했다 무엇의 일부) 나 그 선이 괜찮다고 생각하게하는이 일 mongod과 문제가 있었다 대체 항목으로 / 내가하려고했던 구문. (내 추측은 IPS가? 내가 코딩의 요소에 익숙 해요 소켓 파일 참조에 뭔가입니다.)

    소켓을 삭제 한 후 나는 (인증이 활성화 된 옵션 필요) 다음과 같이 몽고에 쉘 할 수 있었다 :

    mongo -u admin -p password --authenticationDatabase "admin")
    

    이는 127.0.0.1 작품도가 (내 현재 시나리오에서 nodebb 테스트 인스턴스가 내가 설정하고) 내 원격 응용 프로그램에서 연결하는 것으로 설정합니다.

  5. ==============================

    5.문서는 말했다

    문서는 말했다

    "당신은 쉼표의 목록이 여러 IP 주소에 바인딩하여 MongoDB에 값을 분리 연결할 수 있습니다."

    그래서, 그것은 사실이 아니다 ...

  6. ==============================

    6.내 경우에는, 옵션 중 어느 것도 이상 일하지. 결국 나를 위해 일한 사양했다 :

    내 경우에는, 옵션 중 어느 것도 이상 일하지. 결국 나를 위해 일한 사양했다 :

    bind_ip= [<IP_one> <IP_two>]
    
    

    예는 수 :

    bind_ip= [127.0.0.1 10.0.0.4]
    
    

    (공지 사항에는 쉼표가 두 방향 사이가 없음)

    우분투 16.4.5에 MongoDB를 2.6.10 (LTS)가

  7. ==============================

    7.이봐 난 MongoDB의 쉘 버전을 사용하고 있습니다 : 3.2.6.

    이봐 난 MongoDB의 쉘 버전을 사용하고 있습니다 : 3.2.6.

    bindIP = 127.0.0.1,192.168.0.50 
    bindIP = [127.0.0.1,192.168.0.50]
    bind_ip = 192.168.6.38 
    

    작동하지 않는,이 명령을 사용하여 mongod.conf을 편집 한

    sudo -i gedit /etc/mongod.conf file 
    

    그리고 bind_ip이 잘 작동 = 192.168.6.38 상호 변경 bind_ip = 0.0.0.0 ....

  8. ==============================

    8.MongoDB를 4.0.5 사용 : 나를 위해 다음과 같은 일했다 :

    MongoDB를 4.0.5 사용 : 나를 위해 다음과 같은 일했다 :

    bindIp=[127.0.0.1,11.22.33.44]
    

    그리고 나는 인증에 전환 :

    security:
       authorization: "enabled"
    

    MongoDB를 다시 시작 (우분투 18.04에) 오류를했다 :

    0.0.0.0 : 따라서 나는 bindIp을해야했다. 어쩌면 누군가가 bindIp 및 보안을 결합하는 방법 단서를 가지고

  9. ==============================

    9.이 내용은 우분투에서 작동 표기법 : (공간에 조심 기호)

    이 내용은 우분투에서 작동 표기법 : (공간에 조심 기호)

    bind_ip=[127.0.0.1,22.33.44.99,88.77.55.66] 
    

    22.33.44.99 - 노트북의 내 고정 IP - 서버, 88.77.55.66의 내 고정 IP. 그것은 나에게 인터넷에서 밖으로 MongoDB를 위해 접근 할 수있는 기회를 주었다. UFW에 열린 포트 27,017 - 규칙을 추가하는 것을 잊지 마십시오.

  10. ==============================

    10.여전히 궁금해하는 사람들을 위해 - 문제는 구문이 아니라 주소는 당신에 넣어.

    여전히 궁금해하는 사람들을 위해 - 문제는 구문이 아니라 주소는 당신에 넣어.

    원격 클라이언트 연결을 수신하기 위해 당신은뿐만 아니라 서버 공용 IP를 추가해야합니다. 당신은 추가해야합니다 그래서 :

     - localhost
     - 127.0.0.1 // Add both localhost and 127.0.0.1 to ensure local accessibility
     - server_public_ip  // This is important one. Add the public server IP address.
     - remote_client_ip1
     - remote_client_ip2
     - remote_client_ip3 // As many client IPs as you want to grant access to
    

    구성은 다음과 같이해야합니다 그래서 :

    bind_ip = 로컬 호스트, 127.0.0.1, server_public_ip, remote_client_ip]

    우리는 다른 구성이 설정 하나의 작업을 할 수 있기 때문에, 지역의 접근성을 보장하기 위해 로컬 호스트 모두 127.0.0.1 및 어디다.

    참고 : bind_ip 여러 구문을 받아들입니다. 당신이있는 경우 구문 오류 MongoDB의 서비스가 실행되지 않습니다. 당신은 서비스 MongoDB의 상태로 확인할 수 있습니다.

    당신은 몇 달에 한 번씩 일어나는 일반 RANSOME 공격 중 하나의 피해자가 될 수있는 어느 0.0.0.0을 놓지 마십시오. 그것에 대해 읽기

  11. from https://stackoverflow.com/questions/30884021/mongodb-bind-ip-wont-work-unless-set-to-0-0-0-0 by cc-by-sa and MIT license