關於mongodb遠端訪問問題

                                    

背景:在視訊學習vue開發中使用到了mongodb這個資料庫,視訊中安裝在本地也能通過mongo命令訪問到本地資料庫。在練習中將mongodb安裝到了雲伺服器上,通過外網來訪問這個mongodb的時候卻超時了。嘗試使用ping命令去訪問伺服器ip能ping通,在本地的window下使用telnet ip:port的時候卻ping不同

版本:
mongodb3.6社群版

搜尋資料:

防火牆限制了埠的訪問

解決: 直接關閉防火牆
結果:不起作用

mongodb配置檔案中指定訪問的ip

解決: mongodb -help檢視幫助選項,
發現–config –bind_ip –bing_ip_all, 可以從三者中配置ip地址,配置ip為0.0.0.0(所有ip都能訪問)
結果:不起作用

通讀官網資料:
mongodb3.6版本變更 中有下面的一段引用

Previously, starting from MongoDB 2.6, only the binaries from the official MongoDB RPM (Red Hat, CentOS, Fedora Linux, and derivatives) and DEB (Debian, Ubuntu, and derivatives) packages bind to localhost by default.
When bound only to the localhost, these MongoDB 3.6 binaries can only accept connections from clients (including the mongo shell, other members in your deployment for replica sets and sharded clusters) that are running on the same machine. Remote clients cannot connect to the binaries bound only to localhost.
To override and bind to other ip addresses, you can use the net.bindIp configuration file setting or the –bind_ip command-line option to specify a list of ip addresses.
mongodb只繫結localhost,客戶端只能通過localhost訪問,如果想要通過外網來訪問需要新增bind_ip,那麼問題來了上面通過檢視別人部落格的時候也使用了bind_ip選項繫結了0.0.0.0 為什麼行不通? 這裡精確到繫結ip為雲伺服器的ip
結果:不起作用,啟動報錯

使用ssl作為外部連線的認證

上面通過繫結bind_ip選項來啟動mongod服務發現報錯,這裡需要配置ssl證書,參考官網配置ssl證書,還需要配置客戶端的ssl,參考官網Client配置ssl,簡單概括就是:要想外網訪問就需要配置bing_ip,要想bing_ip起作用就得配置ssl通過通過證書認證
結果:不起作用,mongo 啟動報錯

都幹到這一步了放棄是不可能的,繼續查資料

安全部署MongoDB最佳實踐,中描述:MongoDB叢集之間以及從客戶端連線到MongoDB例項的連線應該使用SSL。使用SSL對效能沒有影響並且可以防範類似於man-in-the-middle的攻擊。參見 配置SSL 以獲得更多資訊。 注意MongoDB社群版預設並不支援SSL。你可以選用MongoDB企業版(有SSL支援),或者從原始碼重新編譯MongoDB並使用 —ssl 選項來獲得SSL功能。

下載企業版

下載企業版要我註冊是怎麼回事? 心裡有種不祥的預感,繼續查資料,

不想折騰了,直接老老實實在window下安裝個mongodb吧,先入門了再研究更深的

關聯文章