Linux環(huán)境下安裝MongoDB

MongoDB在Windows上的安裝過程整體上來說并不難,網(wǎng)上的資料也比較多,這里我就不介紹了,我主要說下如何在Linux環(huán)境下安裝MongoDB。


環(huán)境:

CentOS 7
MongoDB 3.4.9


下載MongoDB

首先去MongoDB官網(wǎng)下載MongoDB,地址https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.9.tgz。將下載的文件放到/opt目錄下。

解壓

解壓下載到的tgz文件,并給文件夾重命名為mongodb,然后創(chuàng)建db、logs目錄分別用來存放數(shù)據(jù)和日志。如下:

圖片描述

配置

進入到bin目錄下,編輯mongodb.conf文件,內(nèi)容如下:

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

執(zhí)行結(jié)果如下:

圖片描述

測試

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

圖片描述

默認情況下,連接地址是127.0.0.1:27017,連接的數(shù)據(jù)庫是test數(shù)據(jù)庫,我們也可以手動指定連接地址和連接的數(shù)據(jù)庫:

mongo 127.0.0.1:27017/admin

此時連接成功之后,輸入db命令,我們可以看到當(dāng)前連接的數(shù)據(jù)庫是admin。

配置開機啟動

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

圖片描述

配置完成之后自行關(guān)機重啟測試。

配置環(huán)境變量

每次都要進入到安裝目錄中去輸入命令,麻煩,我們直接配置環(huán)境變量即可,編輯當(dāng)前用戶目錄下的.bash_profile文件,如下:

圖片描述

關(guān)閉MongoDB服務(wù)

使用db.shutdownServer();命令可以關(guān)閉到MongoDB服務(wù),但是這個命令的執(zhí)行要在admin數(shù)據(jù)庫下,所以先切換到admin,再關(guān)閉服務(wù),完整運行過程如下:

圖片描述

安全管理

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

1.MongoDB中的賬號是在某一個庫里邊進行設(shè)置的,我們在哪一個庫里邊進行設(shè)置,就要在哪一個庫里邊進行驗證。
2.創(chuàng)建用戶時,我們需要指定用戶名、用戶密碼和用戶角色,用戶角色表示了該用戶的權(quán)限。

OK,假設(shè)我給admin數(shù)據(jù)庫創(chuàng)建一個用戶,方式如下:

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

user表示用戶名,pwd表示密碼,role表示角色,db表示這個用戶應(yīng)用在哪個數(shù)據(jù)庫上。用戶的角色,有如下幾種(參考資料):

角色名 備注
Read 允許用戶讀取指定數(shù)據(jù)庫
readWrite 允許用戶讀寫指定數(shù)據(jù)庫
dbAdmin 允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計或訪問system.profile
userAdmin 允許用戶向system.users集合寫入,可以找指定數(shù)據(jù)庫里創(chuàng)建、刪除和管理用戶
clusterAdmin 只在admin數(shù)據(jù)庫中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限。
readAnyDatabase 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀權(quán)限
readWriteAnyDatabase 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀寫權(quán)限
userAdminAnyDatabase 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的userAdmin權(quán)限
dbAdminAnyDatabase 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的dbAdmin權(quán)限。
root 只在admin數(shù)據(jù)庫中可用。超級賬號,超級權(quán)限

用戶創(chuàng)建成功之后,我們關(guān)閉掉當(dāng)前MongoDB服務(wù)實例,然后重新啟動新的實例,啟動方式如下:

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

啟動成功之后,如果我們直接執(zhí)行如下命令,會提示沒有權(quán)限:

show dbs

執(zhí)行結(jié)果如下:

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

此時我們需要先進入到admin數(shù)據(jù)庫中,然后授權(quán),操作如下:

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

auth方法執(zhí)行結(jié)果返回1表示認證成功。然后再去執(zhí)行show dbs就可以看到預(yù)期結(jié)果了。此時我再在sang庫下創(chuàng)建一個只讀用戶,如下:

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

創(chuàng)建成功之后,再按照上面的流程進入到sang庫中,使用readuser用戶進行認證,認證成功之后一切我們就可以在sang庫中執(zhí)行查詢操作了,步驟如下:

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

做完這兩步之后再執(zhí)行查詢操作就沒有任何問題了,但是此時如果執(zhí)行插入操作會提示沒有權(quán)限,那我們可以創(chuàng)建一個有讀寫功能的用戶執(zhí)行相應(yīng)的操作,這里就不再贅述。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。