MongoDB在Linux環境部署,依然手把手教

說實話,本是不想寫這種基礎篇的,可是我配置的時候網上教程雖然一大把,但大多數都是缺胳膊少腿的,或者描述不詳細的,在此我就按個人部署經驗,手把手的教一遍linux

若是哪裏漏了或者有描述不清楚的地方,能夠聯繫我,這種基礎文章我要麼不寫,既然寫了,那都是打算持續更新的,就像以前的基礎文章在VsCode中搭建Go開發環境,手把手教你配置git

本文基於MongoDB4.0,CentOS環境搭建部署github

這是篇解決問題的,就不廢話了,按着步驟來,咱啥也不用想就能部署mongodb

部署開始

由於考慮到有的公司部署的Linux服務器不能鏈接外網,這裏以FTP形式將壓縮包上傳到Linux服務器後解壓安裝shell

tar -xvzf mongodb-linux-x86_64-3.2.10.tgz     //解壓
// 此處需ROOT權限
mv mongodb-linux-x86_64-3.2.10 /usr/local/mongodb      //將解壓後的文件移動到指定目錄並更名
cd /usr/local/mongoDB/    //切換到移動後的mongoDB目錄
複製代碼

關於能夠鏈接外網安裝的話,MongoDB的官網就寫的挺不錯的,畢竟我也沒弄過聯網下載,我就不瞎寫了數據庫

好了,接着說解壓後咱們的操做vim

建立data目錄

cd /usr/local/mongodb/    //切換到mongodb
mkdir data  //建立data目錄
mkdir data/db     //建立db 目錄,用於存儲數據庫數據
mkdir log    //建立log日誌目錄,存儲日誌數據

複製代碼

config文件配置

先建立咱們的配置文件數組

cd /usr/local/mongodb/    //切換到mongodb
mkdir conf  // 建立config文件的目錄

vim conf/mongoDB.conf // 建立並打開conf文件
複製代碼

接着填寫咱們的Conifg文件配置內容安全

# mongodb config file

port=27888  #端口
bind_ip= 127.0.0.1,192.168.105.142 #開啓外網訪問則爲0.0.0.0
dbpath=/usr/local/mongoDB/data/db  #數據庫存放
logpath=/usr/local/mongoDB/log/mongodb.log #日誌文件存放
fork=true #設置後臺運行
# auth=true #開啓認證
複製代碼

先將auth=true註釋,由於新部署的MongoDB尚未建立用戶,若是直接開啓,將會致使MongoDB沒法啓動bash

因此只要如果想要給MongoDB設置訪問權限,在設置好帳號密碼後,將auth=true取消註釋,從新啓用下MongoDB便可

profile配置

系統profile文件的配置,這是每裝一個軟件的必備步驟,在profile文件最後面添加環境變量

vim /etc/profile  
  
export MONGODB_HOME=/usr/local/mongodb  
export PATH=$PATH:$MONGODB_HOME/bin  
複製代碼

如果不喜歡用vim進行文本添加,也可使用echo對文件內容的尾行追加內容

echo 'export MONGODB_HOME=/usr/local/mongodb' >> /etc/profile

echo 'export PATH=$PATH:$MONGODB_HOME/bin' >> /etc/profile
複製代碼

上述操做二選一便可,不過都須要重啓系統配置才能生效,記住不要重複執行

source /etc/profile
複製代碼

到這一步,MongoDB該安裝的該配置的都已經弄好了,接下來咱們就須要啓動咱們的MongoDB

啓動MongoDB

由於啓動參數咱們都配置到config中,因此直接以config形式來啓動

mongod --config ../conf/mongodb.conf
複製代碼

建立用戶並分配權限

在這裏我建議使用Studio 3T鏈接咱們的MongoDB服務器來建立用戶,沒什麼別的理由,就是簡單​罷了

先給大家截圖操做一下在Studio 3T中咱們該怎麼設置用戶權限

選擇要設置權限的庫,添加用戶

再給用戶分配權限

非admin庫,用戶通常只須要分配readWrite權限便可

而admin庫,咱們要留一個管理員帳戶,分配root權限,以備不時之需。可是正常操做的時候,能不使用有root權限的用戶,就不要使用,不只容易進行一些危險操做,也會致使生成一些只有root用戶才能操做的文件。換句話說就是影響數據庫的穩定性

好了,咱們再來看看用shell怎麼建立用戶,這我就建立一個admin下權限爲rootuserAdminAnyDatabase的用戶吧

db.createUser(
{
	user: "naonao",
	pwd: "123456",
	roles:[
            {role:"root",db:"admin"}
           ,{role:"userAdminAnyDatabase",db:"admin"}
        ]
})
複製代碼

能夠看到,roles裏面是一個Json數組,因此若是咱們只須要一個權限,roles數組中的元素保留一個便可

帳戶密碼以及指定端口登錄mongoDB

採用用戶登錄方式以前記得先把MongoDB服務關了,把配置文件內的用戶驗證auth=true註釋取消

進入mongoDB/bin文件路徑下

cd /usr/mongoDB/bin
複製代碼

而後使用帳號密碼以及指定對應的端口,來啓動咱們的MongoDB,若是是默認的27017端口,能夠不進行指定

mongo -u "username" -p "password" -authenticationDatabase "admin" --port 27888
複製代碼

帳戶默認驗證的就是admin,因此若是是屬於admin數據庫的用戶,那麼把--authenicationDatabase "admin"去掉也不要緊

若是使用的用戶名密碼,是屬於別的庫,那麼就必需要指定對應的庫咯~把'admin'改爲登錄用戶對應的庫便可

關閉MongoDB

> use admin
> db.shutdownServer()
複製代碼

或者直接kill對應的Mongo進程

先查詢MongoDB的進程

ps -aux | grep mongo
複製代碼

killallMongoDB的全部相關進程

killall mongo
複製代碼

有時候使用kill指定mongo對應的pid沒法結束進程,killall執行後mongo進程仍是依然存在,那麼只好拿出殺手鐗killall -9 mongo

不過killall -9是一個危險的命令,這個強大和危險的命令迫使進程在運行時忽然終止,進程在結束後不能自我清理。危害是致使系統資源沒法正常釋放,通常不推薦使用,除非其餘辦法都無效。

Linux開放指定端口

MongoDB在如今已經搭建完成,在Linux上已經能夠正常使用咯

咱們的MongoDB加了帳號密碼後如果依然不放心安全性,能夠將咱們的端口進行變更,不使用默認的端口27017

端口進行改變後,咱們要記得在Linux上打開對應的端口,不然客戶端是沒法鏈接上咱們的MongoDB服務器的

打開端口有兩種方法,一種是一次性生效,重啓後須要從新打開端口。另一種是永久生效,服務器重啓也不影響端口的開放

在這我將MongoDB的端口設爲27888

Linux重啓後,端口須要從新開放:

iptables -I INPUT -p tcp --dport 27888 -j ACCEPT
複製代碼

永久生效: 在/etc/sysconfig/iptables文件內加上下面這句命令

-A INPUT -p tcp -m tcp --dport 27888 -j ACCEPT

# 重啓iptables
service iptables restart
複製代碼

若是iptables文件不存在,那咱們直接建立一個就行了

服務器重啓後自動打開MongoDB

有時候咱們會重啓服務器,可是不免有些東西會忘記打開,或者別的同事重啓了服務器,他不知道怎麼開

因此咱們須要配置成MongoDB自動打開,這樣就能避免不少沒必要要的麻煩

cd /etc/rc.d

# 將MongoDB的啓用方式追加到rc.local文件內
echo '/usr/local/mongoDB/bin/mongod --config /usr/local/mongoDB/conf/mongodb.conf' >> rc.local
複製代碼

若是咱們對MongoDB設置了自定義端口,可不要忘了端口也要配置成開機自動打開哦

在這也寫上Linux關機/重啓的命令吧,能夠驗證下咱們配置的重啓生效的內容是否成功

Linux關機/重啓

重啓命令:    reboot(如今從新啓動計算機)

shutdown now(如今從新啓動計算機)

關機命令:shutdown -h now(馬上進行關機)

    halt(馬上進行關機)

    poweroff(馬上進行關機)
複製代碼

通常狀況下咱們鏈接Linux服務器都是使用遠程鏈接,因此執行reboot便可,關機命令就別嘗試了,知道這玩意就行了,畢竟……遠程鏈接的狀況下,關了後你咋開機呢???

微信掃碼關注公衆號「鬧鬧吃魚」,每週都有好分享

相關文章
相關標籤/搜索