Mongodb的安全模式默認是關閉,此時它需要在一個可信任的運行環境中。
在可信任的環境中使用默認的關閉安全模式最簡單,但是需要確保可信任的設備訪問數據庫的TCP端口,
這通常需要隔離數據庫所在設備,使其完全無法訪問外部網絡。
確保網絡安全
1, 在分片式環境中
a,集羣中的所有的mongodb進程(mongos, mongod, mongod--configsvr)應該是能相互連接的。
b,客戶端必須能夠連接到mongos進程,但是,它們可以從mongod被阻塞。
2,在非分片式副本環境中
a,所有客戶端必須能連接所有非隱藏的副本集成員。
b,副本集的所有成員(mongod進程)需要能夠相互通信。
IP 地址綁定
默認情況下,mongod服務器將監聽設備上所有可用的IP地址。可以在mongod的"bind_ip"配置項中限制監聽的IP地址。
TCP端口號
mongodb默認監聽下列端口號:
獨立mongod服務:27017
mongos服務: 27017
分片服務(mongod --shardsvr): 27018
配置服務(mongod --configsvr):27019
mongod的網站統計頁面端口:通常是28017,即獨立mongod服務端口號加1000, 可以用--nohttpinterface 命令行參數禁止統計頁面。
以上端口可以更改但不推薦。
在安全模式下運行(使用 --auth 或者 --keyFile)
mongodb支持身份驗證和簡單的粗粒度訪問控制的"安全模式". 可以通過--anth和--keyFile命令行參數啓用。
一個通過用戶名密碼認證的特定數據庫,一旦通過認證,普通用戶能夠完全讀寫數據庫。還可以創建只讀用戶,使其只有讀取權限。
admin數據庫是一個特殊的庫。一些管理命名只能在admin數據庫運行(所以只能由admin運行)。
當然,用戶能訪問admin數據庫也能讀寫在服務或集羣中的其他數據庫。
注意:即使使用安全模式,也應該設置合理的防火牆策略。
啓動Mongodb服務有兩種方式,前臺啓動或者Daemon方式啓動,前者啓動會需要保持當前Session不能被關閉,後者可以作爲系統的fork進程執行,下文中的path是mongodb部署的實際地址。
1.最簡單的啓動方式,前臺啓動,僅指定數據目錄,並且使用默認的27107端口,cli下可以直接使用./mongo連上本機的mongodb,一般只用於臨時的開發測試。
1 |
./mongod --dbpath=/path/mongodb |
2. 啓動綁定固定的IP地址、端口,這就mongo在連接mongod的時候就需要指定IP和端口了。
1 |
./mongod --dbpath=/path/mongodb --bind_ip=10.10.10.10--port=12345 |
2 |
//連接mongod |
3 |
./mongo 10.10.10.10:12345 |
3. daemon後臺運行,簡單的是命令後面加“&”。
1 |
./mongod --dbpath=/path/mongodb --bind_ip=10.10.10.10--port=12345 & |
或者使用mongod自帶的--fork參數,此時必須指定log的路徑。
1 |
./mongod --dbpath=/path/mongodb--fork= true logpath=/path/mongod.log |
4. (推薦)以配置文件形式保存配置。
1 |
port=12345 |
2 |
bind_ip=10.10.10.10 |
3 |
logpath=/path/mongod.log |
4 |
pidfilepath=/path/mongod.pid |
5 |
logappend= true |
6 |
fork= true |
然後啓動mongod時引入配置文件
./mongod -f /path/mongod.conf
下面是mongod啓動的常用參數詳細說明:
參數 | 說明 | 取值示例 |
dbpath | mongodb數據文件存儲路徑 | /data/mongodb |
logpath | mongod的日誌路徑 | /var/log/mongodb/mongodb.log |
logappend | 日誌使用追加代替覆蓋 | true |
bind_ip | 綁定的IP | 10.10.10.10 |
port | 綁定的端口 | 27107 |
journal | write操作首先寫入“日記”,是一個數據安全的設置,具體參考官方文檔。 | true |