本章給大家介紹mongodb如何快速搭建屬于自己的數(shù)據(jù)庫。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。
mongoddb安裝
-
在本地安裝
直接通過官網(wǎng)下載機子對應的壓縮包 mongodb
-
在云服務器(centos系統(tǒng))安裝
wget?https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.4.9.tgztar?zxvf?mongodb-linux-x86_64-3.2.6.tgz mv?mongodb-linux-x86_64-3.2.6.tgz?mongodb cd?mongodb
請根據(jù)你的的系統(tǒng)下載相應的版本~
環(huán)境配置&啟動服務器
在文件目錄下建立存放數(shù)據(jù)的文件夾 一般目錄就是 /usr/local/mongodb/data/db/ 通過運行命令去啟動mongodb
./bin/mongod?--dbpath=/usr/local/mongodb/data/db/?--rest
這里有幾個參數(shù)重點說明一下,mongod為你mongodb 的命令行支持可以啟動,如果有需要可以通過編輯 /etc/profile 編輯進 全局環(huán)境,dbpath 也就是數(shù)據(jù)路徑,對應你建立的data目錄即可。–rest則是一個圖形支持
mongodb的默認路徑為 //localhost:27017 運行成功后訪問這個地址酒會有成功的提示 加上rest參數(shù) 可以訪問//localhost:28017
./bin/mongo 可以打開shell
常用命令:
#查詢所有數(shù)據(jù)庫????show?dbs; #刪除當前使用數(shù)據(jù)庫???db.dropDatabase();? #克隆主機數(shù)據(jù)???db.cloneDatabase(“127.0.0.1”);? #修復當前數(shù)據(jù)庫?db.repairDatabase();? #查看當前使用的數(shù)據(jù)庫??db.getName();? #顯示當前db狀態(tài)??db.stats();? #查看當前db的鏈接機器地址??db.version();
云服務器上部署mongodb環(huán)境
現(xiàn)在云端非常流行,很多人選擇了用云服務器來部署自己的項目,這里就介紹一下云端的mongodb配置。
./bin/mongod?--fork?--dbpath=/usr/local/mongodb/data/db/?--logpath=/usr/local/mongodb/data/log/error.log?-logappend?--rest
數(shù)據(jù)庫部署到云服務器就需要后臺運行,一開始用的centos的forever插件,發(fā)現(xiàn)并不能后臺運行數(shù)據(jù)庫。查閱了一下資料發(fā)現(xiàn)官方就有命令 --fork 啟動后臺服務 –logpath –logappend參數(shù) 為后臺服務加個log日志 rest效果同上面。
讓數(shù)據(jù)庫更直觀
密密麻麻的數(shù)據(jù)是不是很丑?很難受?這個時候我們就需要一個美化數(shù)據(jù)庫的插件了
網(wǎng)上有很多 如 mongovue , adminmongo 可以搜索活著Github上查閱一下。
以下是數(shù)據(jù)庫加密,我也是上線被攻擊后才痛定思痛更新了加密過程。
添加超級管理員
首先,運行你的數(shù)據(jù)庫,成功后執(zhí)行shell操作。
>?use?admin >?db.createUser( ???{ ?????user:?"your?name", ?????pwd:?"your?pwd", ?????roles:?[?{?role:?"root",?db:?"admin"?}?] ???} ) Successfully?added?user:?{ ????"user"?:?"admin", ????"roles"?:?[ ????????{ ????????????"role"?:?"root", ????????????"db"?:?"admin" ????????} ????] }
root表示超級權(quán)限,這樣就創(chuàng)建了具有超級權(quán)限的賬號了。可以通過以下命令來查看用戶。
[Uploading image_088895.png . . .]
db.getUsers()
MongoDB數(shù)據(jù)庫角色
role指角色,管理控制數(shù)據(jù)庫的權(quán)限,第一個用戶最好是root用戶,可以執(zhí)行任何操作,
初始化最好創(chuàng)建root權(quán)限的用戶,當開啟auth模式,任何操作都需要權(quán)限才能執(zhí)行。也千萬不能直接auth啟動后臺運行模式,否則你就沒有權(quán)限用戶去關閉數(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ù)庫中可用,賦予用戶所有分片和復制集相關函數(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)限
啟動auth模式
在創(chuàng)建完超級管理員后,才能真正啟動加密的數(shù)據(jù)庫,否則即使你自己也無權(quán)去操作數(shù)據(jù)庫。
?//后臺模式需要在shell中關閉之前的普通模式數(shù)據(jù)庫,輸入以下命令 ?>?use?admin ?>?db.shutdownServer() //終端?啟動加密數(shù)據(jù)庫?--auth $?./bin/mongod?--fork?--dbpath=/root/mongodb/db/?--logpath=/root/mongodb/log/error.log?-logappend?--auth //通過命令運行數(shù)據(jù)庫?,在你的運行命令加上后綴?--auth,這樣就啟動了加密數(shù)據(jù)庫?,再次執(zhí)行數(shù)據(jù)庫操作 >?show?dbs 2017-09-23T14:09:58.922+0800?E?QUERY????[thread1]?Error:?listDatabases?failed:{ ????"ok"?:?0, ????"errmsg"?:?"not?authorized?on?admin?to?execute?command?{?listDatabases:?1.0?}", ????"code"?:?13, ????"codeName"?:?"Unauthorized" }?: _getErrorWithCode@src/mongo/shell/utils.js:25:13 Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1 shellHelper.show@src/mongo/shell/utils.js:769:19 shellHelper@src/mongo/shell/utils.js:659:15 @(shellhelp2):1:1 //??發(fā)現(xiàn)報錯,需要認證信息 >?db.auth('your?name','your?pwd') 成功返回1??失敗返回0?輸入之前創(chuàng)建的超級賬號,OK,簡單的加密就完成了。
?
加密成功,需要認證才能操作數(shù)據(jù)庫
鏈接加密數(shù)據(jù)庫
數(shù)據(jù)庫加密后我們的服務端代碼也要相應變動。
xxx.db('mongodb://your?name:?your?pwd@localhost:27017/db?authSource=admin');
xxx表示你用的插件 比如 mongoose 、mongoskin之類的。
到此為止,你的數(shù)據(jù)庫就加密完成了,當你的項目變大,你也許還需要創(chuàng)建許多用戶,或者升級用戶權(quán)限,這些官方都有相關的API去操作。