1. 程式人生 > >Linux上安裝MongoDB

Linux上安裝MongoDB

MongoDB在Windows上的安裝過程整體上來說並不難,網上的資料也比較多,這裡我就不介紹了,我主要說下如何在Linux環境下安裝MongoDB。

環境:

CentOS 7
MongoDB 3.4.9

下載MongoDB

解壓

解壓下載到的tgz檔案,並給資料夾重新命名為mongodb,然後建立db、logs目錄分別用來存放資料和日誌。如下:

這裡寫圖片描述

配置

進入到bin目錄下,編輯mongodb.conf檔案,內容如下:

dbpath=/opt/mongodb/db
logpath=/opt/mongodb/logs/mongodb.log
port=27017 fork=true nohttpinterface=true

執行結果如下:

這裡寫圖片描述

測試

做完這一切之後,我們就可以啟動MongoDB了,還是在bin目錄下,執行./mongod -f mongodb.conf命令表示啟動MongoDB,然後執行mongo命令表示表示進入到MongDB的控制檯,進入到控制檯之後,我們輸入db.version()命令,如果能顯示出當前MongoDB的版本號,說明安裝成功了。如下:

這裡寫圖片描述

預設情況下,連線地址是127.0.0.1:27017,連線的資料庫是test資料庫,我們也可以手動指定連線地址和連線的資料庫:

mongo
127.0.0.1:27017/admin

此時連線成功之後,輸入db命令,我們可以看到當前連線的資料庫是admin。

配置開機啟動

我們也可以配置開機啟動,編輯/etc/rc.d/rc.local檔案,如下:

這裡寫圖片描述

配置完成之後自行關機重啟測試。

配置環境變數

每次都要進入到安裝目錄中去輸入命令,麻煩,我們直接配置環境變數即可,編輯當前使用者目錄下的.bash_profile檔案,如下:

這裡寫圖片描述

關閉MongoDB服務

使用db.shutdownServer();命令可以關閉到MongoDB服務,但是這個命令的執行要在admin資料庫下,所以先切換到admin,再關閉服務,完整執行過程如下:

這裡寫圖片描述

安全管理

上面我們所做的所有的操作都沒有涉及到使用者,我們在用Oracle、MySQL或者MSSQL時都有使用者名稱密碼需要登入才可以操作,MongoDB中當然也有,但是需要我們手動新增。在新增之前,我們先來說說MongoDB中使用者管理的幾個特點:

1.MongoDB中的賬號是在某一個庫裡邊進行設定的,我們在哪一個庫裡邊進行設定,就要在哪一個庫裡邊進行驗證。
2.建立使用者時,我們需要指定使用者名稱、使用者密碼和使用者角色,使用者角色表示了該使用者的許可權。

OK,假設我給admin資料庫建立一個使用者,方式如下:

use admin
db.createUser({user:"root",pwd:"123",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

user表示使用者名稱,pwd表示密碼,role表示角色,db表示這個使用者應用在哪個資料庫上。使用者的角色,有如下幾種(參考資料):

角色名 備註
Read 允許使用者讀取指定資料庫
readWrite 允許使用者讀寫指定資料庫
dbAdmin 允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system.profile
userAdmin 允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者
clusterAdmin 只在admin資料庫中可用,賦予使用者所有分片和複製集相關函式的管理許可權。
readAnyDatabase 只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權
readWriteAnyDatabase 只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權
userAdminAnyDatabase 只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權
dbAdminAnyDatabase 只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。
root 只在admin資料庫中可用。超級賬號,超級許可權

使用者建立成功之後,我們關閉掉當前MongoDB服務例項,然後重新啟動新的例項,啟動方式如下:

mongod -f /opt/mongodb/bin/mongodb.conf --auth

啟動成功之後,如果我們直接執行如下命令,會提示沒有許可權:

show dbs

執行結果如下:

"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"

此時我們需要先進入到admin資料庫中,然後授權,操作如下:

use admin
db.auth("root","123")

auth方法執行結果返回1表示認證成功。然後再去執行show dbs就可以看到預期結果了。此時我再在sang庫下建立一個只讀使用者,如下:

use sang
db.createUser({user:"readuser",pwd:"123",roles:[{role:"read",db:"sang"}]})

建立成功之後,再按照上面的流程進入到sang庫中,使用readuser使用者進行認證,認證成功之後一切我們就可以在sang庫中執行查詢操作了,步驟如下:

use sang
db.auth("readuser","123")

做完這兩步之後再執行查詢操作就沒有任何問題了,但是此時如果執行插入操作會提示沒有許可權,那我們可以建立一個有讀寫功能的使用者執行相應的操作,這裡就不再贅述。

好了,MongoDB的安裝我們就說這麼多,有問題歡迎留言討論。

更多資料請關注公眾號:

這裡寫圖片描述