回答
我能理解你的關心這裏是用安裝安全性,但它是值得考慮的MongoDB是設計建造在集羣系統進行交互,因此TCP網絡是設計的一部分。這就是說,正如你所知道的那樣,默認情況下有一個你可以用於本地訪問的unix域套接字連接。
您可以使用'--bind_ip'配置選項來綁定到僅環回('127.0.0.1')或者只有您希望使用的接口,因爲默認情況下mongod會綁定到所有可用的接口。有關啓動選項的完整列表,您可能需要查看manual page以確定您需要什麼。
對於其他安全性,您可以參考你的防火牆規則。
這是一個至少5歲的bug。我發現的唯一問題是關閉WONTFIX和RTFM,但是這個問題記錄在2.4這裏有點涉及到這個問題:https://jira.mongodb.org/browse/SERVER-9383。
除非IPV4 IP地址是127.0.0.1或0.0.0.0,否則MongoDB將拒絕創建unix域套接字。您無法在一個界面上運行它或將其禁用(出於未說明的原因)。對我來說,這是對MongoDB代碼質量的反映。
我跟蹤代碼回到2011年和我的信念是,它是一個原油黑客以防止意外有2個MongoDB的進程試圖創建相同的套接字文件。如果你在192.168.1.1:27017和192.168.1.2:27017上運行了一個實例,它們都會嘗試在/tmp/mongod-27017.sock中創建相同的套接字文件。由於10gen中沒有人知道爲什麼檢查在那裏,因此自2011年以來沒有人進行修復。由於EADDRINUSE,很容易檢查127.0.0.1:27017已被使用,但很難檢查你的套接字文件是陳舊的,或者如果另一個進程創建它。我不知道他們爲什麼不只是以不同的方式命名套接字文件。
在這裏看到的代碼:https://github.com/mongodb/mongo/blob/r2.2.4/src/mongo/util/net/listen.cpp#L91
if (useUnixSockets && (sa.getAddr() == "127.0.0.1" || sa.getAddr() == "0.0.0.0")) // only IPv4
out.push_back(SockAddr(makeUnixSockPath(port).c_str(), port));
- 1. 如何打開TCP端口
- 2. TCP端口如何綁定
- 3. 如何使用PHP偵聽TCP端口?
- 4. 如何重用撥打的TCP端口
- 5. Erlang的TCP端口
- 6. 誰使用TCP端口?
- 7. 用於TCP端口的mktemp
- 8. 着讀TCP端口
- 9. 如何通過TCP端口託管WCF?
- 10. 如何選擇TCP/IP端口號?
- 11. TCP和UDP端口如何具有相同的端口號?
- 12. 禁用USB端口
- 13. 如何禁用adb端口轉發?
- 14. mongodb websrv端口
- 15. Openshift綁定TCP端口
- 16. PHP SoapClient的TCP端口808
- 17. 如何將(Clojure)Aleph TCP服務器綁定到TCP v4端口?
- 18. 聽iphone的tcp端口
- 19. TCP端口號 - android phone usb
- 20. Mininet tcp的src端口
- 21. 互聯網協議端口vs TCP端口vs UDP端口
- 22. WindowsCE 5.0安全TCP端口
- 23. TCP端口訪問和C++
- 24. C#偵聽TCP端口
- 25. C++檢查TCP端口
- 26. 哪個端口用於MongoDB?
- 27. TCP端口複製器
- 28. 偵聽多個TCP端口
- 29. 如何使用C++進行端口轉發,如'adb forward tcp:8081 tcp:8082'
- 30. TCP端口競爭狀態?
它只能通過TCP。使用防火牆阻止其他訪問。 – WiredPrairie
它可以在unix套接字上工作 – user3188101
Stackoverflow是一個開發人員的交流網站。但這是一個關於配置和管理的問題。這些問題在http://dba.stackexchange.com上適合得多 – Philipp