回答
我能理解你的关心这里是用安装安全性,但它是值得考虑的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