外部無法連接部署在linux上的MongoDB

一、問題描述

    CentOS7安裝了mongoDB,並且成功開啓服務,本機上可以訪問數據庫進行CURD,但是通過java或者mongo
數據庫管理工具無法連接該數據庫。

二、解決過程

    1、可以確定服務已經開啓,所以要確認端口號是否正確
    netstat -anp查看端口信息

[root@localhost db]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      6913/mongod
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3058/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3383/master
tcp        0      0 192.168.3.92:22         192.168.3.123:53765     ESTABLISHED 3920/sshd: root@not
tcp        0      0 192.168.3.92:22         192.168.3.123:52492     ESTABLISHED 4112/sshd: root@not

    由此可以知道,mongo服務的端口確實是27017,端口號並沒有錯。
    2、可以看到,該服務的Local Address是127.0.0.1:27017。
    Local Address表示訪問端口的方式,0.0.0.0 是對外開放端口,127.0.0.1 說明只能對本機訪問,外面訪問不了此端口;這說明了27017端口對外不開放,需要讓防火牆對該端口開放。

//開放27017端口
[root@localhost /]# firewall-cmd --zone=public --add-port=27017/tcp --permanent
success
//查看端口是否開放
[root@localhost /]# firewall-cmd --query-port=27017/tcp
yes
//殺掉進程
[root@localhost /]# kill -9 6913
yes
//後臺重啓服務
[root@localhost /]# nohup mongo & 
yes
[root@localhost /]# netstat -anp | grep mongo
tcp        0      127.0.0.1:27017           0.0.0.0:*               LISTEN      5754/mongod

    開放端口後,local address仍然是127.0.0.1,問題沒有解決。
    3、查閱資料,猜測mongo啓動時若沒有指定配置文件,會默認把bind_ip設爲127.0.0.1。爲了驗證假設,在/etc目錄下新建一個mongodb.conf文件。

mongodb.conf

bind_ip_all = true                 # 任何機器可以連接
#bind_ip = 127.0.0.1,192.168.0.3     # 本機和192.168.0.3可以訪問
port = 27017                        # 實例運行在27017端口(默認)
dbpath = /usr/local/mongodb/db      # 數據文件夾存放地址(db要預先創建)
logpath = /usr/local/mongodb/logs/27017.log  # 日誌文件地址
logappend = true                   # 啓動時 添加還是重寫日誌文件
fork = true                         # 是否後臺運行

以配置文件的形式啓動

[root@localhost /]# mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 12868
child process started successfully, parent exiting

查詢端口信息,local address成功改爲0.0.0.0

[root@localhost /]# netstat -anp | grep mongo
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      12868/mongod

現在,java可以訪問數據庫了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章