不使用預設埠時mongo的幾個坑

天府雲創發表於2017-11-27

背景:
在企業安全中,比較基礎的一塊就是:資產漏洞管理;
巡風(關於巡風,點選此處瞭解)可以用來做這件事,當然某些地方需要根據自己實際情況修改、增加,這裡不贅述;
其資料庫為mongo;

在初步使用過程中,為了方便後續的開發,需要使用pycharm整合的mongo視覺化外掛,
這其中我們遇到了一些"不使用預設埠的坑"(大佬一笑而過。。。)

遇到兩個問題:

1、無法shell連線資料庫,mongo報錯,

Image.png

指定使用的埠也沒用

Image.png

2、pycharm的mongo外掛無法連線,mechanism嘗試default,報錯如下,

Image.png

看到支援的機制,那就嘗試MONGODB-CR,這次報錯不一樣了:認證失敗 ;但那裡認證失敗了呢,不知道。。。

Image.png

解決:

1、首先搞清

mongo與mongod

要先啟動mongod(有d的一般是守護程式,或服務本身),再mongo(連線服務)

2、發現巡風的資料庫xunfeng配置時,指定了埠 65521,而不是預設的27017;

而巡風的配置檔案Config.py裡會寫明,所以用巡風的指令碼Run.sh啟動時,完全沒有問題;

Image.png

Image.png

但是,如果自己以shell方式要連線mongo時,如果以預設命令 mongo去連線就會報錯,認證失敗;

那麼,就在在啟動mongod的時候指定 埠65521來啟動,

# mongod --port 65521 --dbpath=/var/lib/mongodb

(或更改mongod的配置檔案,並# mongod --config /etc/mongodb.conf 以生效);

Image.png

Image.png

然後去連線mongo 127.0.0.1:65521/xunfeng

成功!

Image.png

3、pycharm中安裝mongo視覺化外掛時

會提示認證失敗,一直找不到原因;

直到通過以上步驟shell連線上資料庫,檢視使用者資訊後才發現:

Image.png

(你說坑不坑,錯誤提示裡是沒有的啊,為啥當時沒有多試一個;))

在這裡選擇相應的方式

 Image.png

  Image.png

成功

這裡記著要用使修改後的conf生效(但為啥:每次都要指定,或用配置檔案啟動 ),這樣才會連線成功;

總結:

其實就是資料庫的服務啟動時的問題,

1、沒有啟動服務

2、在沒有使用預設埠的情況下沒有指定使用的埠,(配置檔案裡也沒有寫)

後續

啟動mongod服務的,寫在開機啟動服務裡,並在後臺執行 就好;這樣不用每次都手動啟動

進入 /etc/rc.local 

在最後寫 啟動mongod的命令

mongod --port 65521 --dbpath=/var/lib/mongodb &

(或更改mongod的配置檔案,並# mongod --config /etc/mongodb.conf &);

注:

1、記得寫 “空格 &” 以後臺形式執行;不然會在啟動的時候卡住

2、如果有exit 0,上述命令寫在exit 0 的前面;(exit 0 表示退出當前指令碼,後續命令不會執行)

有不對之處,望大家能交流、指正;

謝謝!

相關文章