programing

MongoDB bind_ip은 0.0.0으로 설정하지 않으면 작동하지 않습니다.

i4 2023. 5. 1. 19:57
반응형

MongoDB bind_ip은 0.0.0으로 설정하지 않으면 작동하지 않습니다.

MongoDB를 다시 설치하려고 정말 노력했습니다.

그리고 MongoDB bind_ip error: bind() failed errno:99 소켓에 요청한 주소를 할당할 수 없습니다.

bind_ip을 0.0.0.0 또는 127.0.0.1로 설정하면 작동합니다.

$ 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

잘 부탁드립니다.

편집: 제가 단순히 제 대답을 잘못했는지 또는 의 행동이 잘못되었는지 모르겠습니다.bind_ip변경되었지만 여러 개의 고유한 IP에 바인딩할 수 있습니다.

bind_ip:127.0.0.1,10.0.0.1,8.8.8.8

따라서 mongod가 바인딩하도록 할당된 IP 주소 중 하나가 문제의 컴퓨터에 존재하지 않았을 가능성이 높습니다.


바인딩할 수 있습니다.mongodIP에만 되며, IP는 " " " "입니다.0.0.0.0"사용 가능한 모든 네트워크 인터페이스에서 수신"의 별칭입니다.

그래서 둘 중 하나를 사용합니다.

bind_ip=127.0.0.1

루프백 인터페이스를 듣거나

bind_ip=<someIP>

해당 IP만 듣거나

bind_ip=0.0.0.0

시스템에서 사용 가능한 모든 IP를 수신합니다.

특정 IP를 여러 개 들어야 하는 경우 시스템 설계가 잘못되었을 가능성이 매우 높습니다.

저는 단지 어리석은 실수 때문에 같은 문제를 겪었습니다.

주석이 달린 줄과 공간 문제가 있었습니다.

내가 잘못한것

# 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]

바라건대 이 대답이 누군가에게 도움이 되기를 바랍니다.

Mongo 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

이제 원하는 Mongo 도구 또는 명령줄을 사용하여 연결합니다.

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

  • 쉼표와 공백을 사용하면 첫 번째 IP만 바인딩됩니다.
  • 공백만 구분 기호로 인해 첫 번째 IP만 바인딩됩니다.
  • [ ] 서라운드 결과 mongod 시작 실패

저는 이 문제로 여러 시간을 보냈습니다.결국 로그를 보고 거기서 찾은 것을 검색하면 어디론가 갈 수 있었습니다('mongo bindIp multiple'(등)을 검색하면 도움이 되지 않는 답이 있는 이 페이지와 같은 페이지가 가득했습니다).먼저 /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

실수 없이 작동했습니다.흥미로운 점은 시행착오 과정에서 바인딩을 설정하면 실행과 오류가 발생한다는 것입니다.IP를 127.0.0.1로 되돌리고 mongod를 다시 시작하면 작동했습니다. 이는 해당 줄이 정상이고 제가 시도하던 대체 항목/구문에 문제가 있다고 생각하게 했습니다.(소켓 파일에서 ips를 참조하는 무언가가 있을 것으로 예상됩니다.저는 코딩의 그 요소에 익숙하지 않습니다.)

소켓을 삭제한 후 mongo like로 셸링할 수 있었습니다(인증이 활성화된 상태에서 필요한 옵션).

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

127.0.0.1이 작동하고 원격 앱(현재 시나리오에서는 설정 중인 노드비브 테스트 인스턴스)에서 연결할 수 있습니다.

저의 경우, 위의 옵션 중 어떤 것도 작동하지 않았습니다.마침내 저에게 효과가 있었던 사양은 다음과 같습니다.

bind_ip= [<IP_one> <IP_two>]

예를 들어 다음과 같습니다.

bind_ip= [127.0.0.1 10.0.0.4]

(두 방향 사이에는 쉼표가 없습니다.)

Ubuntu 16.4.5(LTS)에 MongoDB 2.6.10이 있습니다.

문서에는 다음과 같이 나와 있습니다.

"여러 IP 주소에 mongod를 바인딩하기 위해 쉼표로 구분된 값 목록을 연결할 수 있습니다."

그럼, 그건 사실이 아니군요...

AWS EC2 Ubuntu 20에서도 같은 문제가 있었습니다.이 문제는 공용 IPv4 주소 대신 전용 IPv4 주소를 배치하여 해결되었습니다.

안녕하세요 저는 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 = 0.0.0.0을 bind_ip = 192.168.6.38로 변경하여 정상적으로 작동합니다...

MongoDB 4.0.5 사용: 다음과 같은 작업이 가능했습니다.

bindIp=[127.0.0.1,11.22.33.44]

그런 다음 Auth:를 켭니다.

security:
   authorization: "enabled"

Ubuntu 18.04에서 mongod를 다시 시작하면 다음 오류가 발생했습니다.

스칼라 옵션 'net.bindIp'은(는) 단일 값이어야 합니다.

그러므로 나는 바인드를 해야만 했습니다.IP: 0.0.0.0.0.아마도 누군가 bindIp와 Security를 결합하는 방법을 알고 있을 것입니다.

Ubuntu에서만 작동하는 표기법입니다. (공백, 기호 주의)

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에 접속할 수 있는 기회를 주었습니다.규칙을 추가하는 것을 잊지 마십시오. 포트 27017을 ufw로 엽니다.

Ubuntu 18과 mongo --버전 4.x.xx:

1 - in etc/mongod.conf - net add

bindIp: "127.0.0.1,0.0.0"

2 - 그런 다음 pm2를 사용합니다.

sudo apt-get update sudo apt-get pm2

3 - mongod에 대한 pm2 서비스를 시작합니다.

pm2 시작 mongod

PD: 프로덕션 시나리오에서 0.0.0.0을 지워야 합니다.

저는 DB에 액세스할 수 있는 다른 기계의 IP 주소를 나열해야 한다고 생각했습니다.그렇지 않습니다.mongoDB를 실행하는 서버의 IP 주소를 나열하기만 하면 됩니다.다음에서 변경한 후의 사용자:

bindIp: localhost

받는 사람:

bindIp: localhost,127.0.0.1,<actual IP of my server>

그러면 네트워크의 다른 컴퓨터에서 MongoDB에 액세스할 수 있습니다.저는 단지 이것을 올바른 방법으로 생각하고 있지 않았습니다.다른 사람들이 저와 같은 뇌 방귀를 뀌었을 때를 대비해 여기에 글을 올립니다.

내 경우에는

OS: Windows 8(MongoDB) OS: Raspbian Linux(클라이언트)

모든 방법을 시도해 보았는데, 아래 구성이 나에게 효과가 있었습니다.

  1. mongod.conf 파일을 다음과 같이 업데이트하는 중

    bindIp: 0.0.0.0
    
  2. DB 컴퓨터 창에서 방화벽 포트를 여는 입니다. 놓치지 마십시오.

     https://www.windowscentral.com/how-open-port-windows-firewall
    

Ubuntu 18과 mongo --버전 4.x.xx:

1 - in etc/mongod.conf - net add

bindIp: "127.0.0.1,0.0.0"

2 - 그런 다음 pm2를 사용합니다.

sudo apt-get update 

sudo apt-get pm2

3 - mongod에 대한 pm2 서비스를 시작합니다.

pm2 start mongod

PD: 프로덕션 시나리오에서 0.0.0.0을 지워야 합니다.

언급URL : https://stackoverflow.com/questions/30884021/mongodb-bind-ip-wont-work-unless-set-to-0-0-0-0

반응형