2013-08-23 39 views
7

Cài đặt Mongo sử dụng homebrew. Nếu tôi nhập mongo trên vỏ, nó sẽ được kết nối với test. Nhưng khi tôi gõ ip address của máy cục bộ thay vì 127.0.0.1Không thể kết nối với mongodb bằng máy ip

mongo --host 192.168.1.100 --verbose 

Nó mang lại cho tôi thông báo lỗi

MongoDB shell version: 2.4.6 
Fri Aug 23 15:18:27.552 versionArrayTest passed 
connecting to: 192.168.1.100:27017/test 
Fri Aug 23 15:18:27.579 creating new connection to:192.168.1.100:27017 
Fri Aug 23 15:18:27.579 BackgroundJob starting: ConnectBG 
Fri Aug 23 15:18:27.580 Error: couldn't connect to server 192.168.1.100:27017 at src/mongo/shell/mongo.js:147 
Fri Aug 23 15:18:27.580 User Assertion: 12513:connect failed 

đã thử sửa đổi mongo.conf bằng cách bình luận bind_ip hoặc bằng cách thay đổi địa chỉ ip 127.0.0.1-0.0.0.0 nhưng không may mắn. Điều này phải đơn giản nhưng không có đầu mối. Sử dụng mac.

Cảm ơn

Cập nhật: Theo yêu cầu. Điều này hoạt động sau khi tôi đã thực hiện các thay đổi như bạn đã đề xuất.

sản lượng ifconfig

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 
    options=3<RXCSUM,TXCSUM> 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    inet 127.0.0.1 netmask 0xff000000 
    inet6 ::1 prefixlen 128 
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 
stf0: flags=0<> mtu 1280 
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 
    options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING> 
    ether XX:XX:XX: 
    media: autoselect (none) 
    status: inactive 
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 
    ether XX:XX:XX:XX:01 
    inet6 XXXX:XXXX:XXXX: %en1 prefixlen 64 scopeid 0x5 
    inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255 
    media: autoselect 
    status: active 
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304 
    ether XX:XX:XX:XX:XX 
    media: autoselect 
    status: inactive 
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078 
    lladdr XX:XX:XX:XX 
    media: autoselect <full-duplex> 
    status: inactive 

Output khi thực hiện lệnh mongo --host 192.168.1.100 --verbose

MongoDB shell version: 2.4.5 
Fri Aug 23 16:42:09.806 versionArrayTest passed 
connecting to: 192.168.1.100:27017/test 
Fri Aug 23 16:42:09.837 creating new connection to:192.168.1.100:27017 
Fri Aug 23 16:42:09.837 BackgroundJob starting: ConnectBG 
Fri Aug 23 16:42:10.129 connected connection! 
Server has startup warnings: 
Fri Aug 23 16:41:59.025 [initandlisten] 
Fri Aug 23 16:41:59.025 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000 

file mongod.conf

# Store data in /usr/local/var/mongodb instead of the default /data/db 
dbpath = /usr/local/var/mongodb 

# Append logs to /usr/local/var/log/mongodb/mongo.log 
logpath = /usr/local/var/log/mongodb/mongo.log 
logappend = true 

# Only accept local connections 
bind_ip = 0.0.0.0` 
+0

vấn đề Firewall sẽ đoán đầu tiên của tôi. Không biết máy Mac nên tôi không thể hướng dẫn bạn thêm nữa. –

+0

Tôi đã thử với 'không có tường lửa' trên mac và trên cùng một máy.Tôi có thể ping bản thân mình bằng cách sử dụng ip nhưng không thể kết nối qua mongo. –

Trả lời

14

tôi chỉ thử nghiệm này trên máy Mac của tôi với Homebrew, hoạt động tốt nếu bạn thay đổi địa chỉ liên kết. Tôi nghi ngờ bạn có lẽ chỉ không nhận được cấu hình cho ràng buộc chính xác?

Để chúng tôi có tất cả thông tin, bạn có thể dán đầu ra của ifconfig không?

Theo mặc định, MongoDB nên lắng nghe trên tất cả các giao diện, bạn không cần phải thay đổi cấu hình, tuy nhiên, việc cài đặt Homebrew dường như để ghi đè này (/usr/local/etc/mongod.conf):

# Only accept local connections 
bind_ip = 127.0.0.1 

Hãy giết MongoDB và chạy này (chú ý -v):

$ mongod --bind_ip 0.0.0.0 -v 
warning: bind_ip of 0.0.0.0 is unnecessary; listens on all ips by default 
all output going to: /usr/local/var/log/mongodb/mongo.log 

Chỉ cần dán đầu ra của bạn cho điều đó xin vui lòng?

Và sau đó chỉ cần thử:

$ mongo --host 192.168.43.2 --verbose 
MongoDB shell version: 2.4.6 
Sat Aug 24 09:07:14.556 versionArrayTest passed 
connecting to: 192.168.43.2:27017/test 
Sat Aug 24 09:07:14.657 creating new connection to:192.168.43.2:27017 
Sat Aug 24 09:07:14.657 BackgroundJob starting: ConnectBG 
Sat Aug 24 09:07:14.657 connected connection! 
Server has startup warnings: 
Sat Aug 24 09:06:44.360 [initandlisten] 
Sat Aug 24 09:06:44.360 [initandlisten] ** WARNING: soft rlimits too low. Number of files  is 256, should be at least 1000 
> 

Rõ ràng thay thế nó với địa chỉ IP của bạn. Hãy cho chúng tôi biết làm thế nào mà đi.

+1

Nhưng tôi vẫn không hiểu. Tại sao điều này không làm việc khi tôi sửa đổi file 'mongo.conf' để chấp nhận 'bind_ip 0.0.0.0' –

+0

@java_dude Hmm, điều đó nghe có vẻ kỳ lạ. Bạn có thể kiểm tra tệp '/ usr/local/var/log/mongodb/mongodb.log' của mình không? – victorhooi

+0

Tôi nên tìm gì trong tệp nhật ký? BTW, câu hỏi được cập nhật với nội dung 'mongod.conf' –

0

Không Thực tế, nếu bạn muốn truy cập giao diện còn lại từ bất kỳ ip nào, bạn không cần đặt bind_ip thành 0.0.0.0 trong mongod.conf, bạn chỉ nhận xét hoặc xóa mục cấu hình khỏi nó, tương tự như

#bind_ip=127.0.0.1 

Và sau đó, khởi động lại dịch vụ của bạn, bạn có thể thấy rằng bạn có thể truy cập các dịch vụ còn lại từ cảng 28.017 từ máy tính của bạn

+0

đây là một thực tế xấu! –

Các vấn đề liên quan