1. 程式人生 > >Linux安裝、執行MongoDB

Linux安裝、執行MongoDB

一.我的安裝環境:CentOS7+MongoDB4.0.1。

二.下載MongoDB。

我下載的是最新的4.0.1的legacy(舊)版。壓縮包下載完成後上傳到Linux上,然後解壓。解壓命令:

tar -zxvf mongodb-linux-x86_64-4.0.1.tgz

得到mongodb-linux-x86_64-4.0.1資料夾,為方便我改名為mongodb-4.0.1:

mv mongodb-linux-x86_64-4.0.1 mongodb-4.0.1

三. 配置環境變數及配置檔案。

3.1配置系統環境變數:

vim  /etc/profile

會提示檔案已存在,輸入“e”回車,然後鍵盤按下“i”進入編輯模式即可。在檔案的最後加上:

#mongodb
            export PATH=$PATH:/opt/mongodb-4.0.1/bin


最後按下“Esc”,再按下“:”,輸入“wq”儲存退出vim編輯模式,source  /etc/profile使修改生效即可。

3.2 建立MongoDB資料存放資料夾和日誌記錄資料夾,為後面的配置檔案使用:

mkdir -p  /data/db

mkdir -p /logs

3.3 建立MongoDB執行時使用的配置檔案:

進入bin目錄下:cd  /opt/mongodb-4.0.1/bin

建立mongodb.conf配置檔案:vim mongodb.conf

會提示是new file,直接輸入下面內容:

dbpath = /data/db #資料檔案存放目錄
logpath = /logs/mongodb.log #日誌檔案存放目錄
port = 27017 #埠
fork = true #以守護程式的方式啟用,即在後臺執行
#auth=true #需要認證。如果放開註釋,就必須建立MongoDB的賬號,使用賬號與密碼才可遠端訪問,第一次安裝建議註釋
bind_ip=0.0.0.0 #允許遠端訪問,或者直接註釋,127.0.0.1是隻允許本地訪問


最後“Esc”,按下“:”,輸入“wq”儲存退出vim編輯模式即可。注意:註釋符號#和資料之間必須是一個空格。

四. 啟動MongoDB

4.1 啟動MongoDB服務:

進入bin目錄下:cd  /opt/mongodb-4.0.1/bin

載入配置檔案方式啟動:./mongod  -f  mongodb.conf

顯示:

至此,MongoDB在Linux上的安裝完畢。

檢視埠對映檢查是否啟動成功:netstat -nltp|grep mongod  ,顯示:

或者:netstat -nltp|grep 27017

或者: ps -ef | grep mongo  ,顯示

或者:top  ,顯示

4.2 關閉MongoDB。

關閉方式也有很多種,下面列舉幾種。

4.2.1 mongod命令關閉:./mongod  --shutdown  ,mongod 命令的 shutdown 選項能幹淨的關閉 MongoDB 服務,會釋放記憶體中MongoDB佔用的記憶體,個人推薦。

4.2.2 kill程序:kill MongoDB的pid  ,直接殺死MongoDB的程序id。kill  -9  pid 強制殺死,有時可能會出現錯誤關不掉時就可使用這種強制方式,但注意這種方式可能並不會馬上釋放記憶體中MongoDB佔用的記憶體,且如果這時候有資料往MongoDB新增可能會導致資料丟失。注:檢視pid:ps -ef | grep mongo , 結果的第二列就是pid。

4.2.3 pkill mongod 。

五. 建立MongoDB的賬號。

這也是我第一次搭MongoDB,由於剛開始在配置檔案中加了auth=true,導致本地可正常訪問,遠端卻一直連線不上MongoDB(遠端使用的是預設空使用者名稱和密碼),看了很多部落格也沒找到原因,最後為MongoDB建立了賬號遠端才可訪問(這裡吐槽一下有的博主寫的東西沒有親自操作一遍就從網上覆制貼上然後釋出,有些沒有責任心)。現在自己才發現原來是這個配置導致的,這也是上面的配置檔案我為什麼建議剛安裝時註釋掉auth=true,當然,後面如果熟悉了賬號的建立,為了安全還是應該開啟的。

建議註釋了auth=true後進行下面的操作,如果開啟了認證,可能會導致下面的操作執行失敗(只是可能)。

進入bin目錄下: cd  /opt/mongodb-4.0.1/bin

執行mongo命令:mongo

使用admin資料庫:use admin  ,注意admin資料庫下建立的賬號許可權是所有庫通用的,即是全域性認證的。

建立使用者:db.createUser({ user: 'root', pwd: 'root',roles: [ { role: "dbOwner", db: "test" }] })

這時候MongoDB的admin資料庫就有了賬號,啟用auth=true,重啟後,再連線就需要賬號密碼授權了。

連線admin資料庫(因為賬號是admin資料庫下的使用者,如果想直接連線test資料庫,這個資料庫中是沒有名為root的使用者的,所以最好的解決方案就是在test資料庫中通過db.createUser建立一個相同的使用者):use admin

授權:db.auth("root","root")

使用test資料庫:use test

這時候就擁有了許可權對資料庫進行操作:db.firstCollection.save({"name":"yzh","age":"25"})

可檢視是否新增成功:db.firstCollection.find({name:"yzh"})

退出mongo命令列工具:ctrl + c

mongo工具的其它命令就不再詳述,待更新。。。