快速搭建屬于自己的數(shù)據(jù)庫——mongodb

為了真實模擬一個項目上線羞酗,擁有前端后端數(shù)據(jù)庫都具備的功能吟策,我選擇了mongodb作為項目的數(shù)據(jù)庫支持拗军,這里分享一些mongodb的經(jīng)驗心得和血的教訓(xùn)钦奋。

mongoddb安裝

  • 在本地安裝

直接通過官網(wǎng)下載機子對應(yīng)的壓縮包 mongodb

  • 在云服務(wù)器(centos系統(tǒng))安裝
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.4.9.tgz

tar zxvf mongodb-linux-x86_64-3.2.6.tgz
mv mongodb-linux-x86_64-3.2.6.tgz mongodb
cd mongodb

///

mongodb官方下載

請根據(jù)你的的系統(tǒng)下載相應(yīng)的版本~

環(huán)境配置&啟動服務(wù)器

在文件目錄下建立存放數(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ù)路徑,對應(yīng)你建立的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”);
 #修復(fù)當前數(shù)據(jù)庫 db.repairDatabase();
 #查看當前使用的數(shù)據(jù)庫  db.getName();
 #顯示當前db狀態(tài)  db.stats();
 #查看當前db的鏈接機器地址  db.version();   
 
 

云服務(wù)器上部署mongodb環(huán)境

現(xiàn)在云端非常流行孽文,很多人選擇了用云服務(wù)器來部署自己的項目,這里就介紹一下云端的mongodb配置夺艰。

./bin/mongod --fork --dbpath=/usr/local/mongodb/data/db/ --logpath=/usr/local/mongodb/data/log/error.log -logappend --rest

數(shù)據(jù)庫部署到云服務(wù)器就需要后臺運行芋哭,一開始用的centos的forever插件,發(fā)現(xiàn)并不能后臺運行數(shù)據(jù)庫郁副。查閱了一下資料發(fā)現(xiàn)官方就有命令 --fork 啟動后臺服務(wù) --logpath --logappend參數(shù) 為后臺服務(wù)加個log日志 rest效果同上面减牺。

讓數(shù)據(jù)庫更直觀

密密麻麻的數(shù)據(jù)是不是很丑?很難受存谎?這個時候我們就需要一個美化數(shù)據(jù)庫的插件了

網(wǎng)上有很多 如 mongovue 拔疚, adminmongo 可以搜索活著Github上查閱一下。這里我使用了 adminmongo Github:[adminmongo]

以下是數(shù)據(jù)庫加密既荚,我也是上線被攻擊后才痛定思痛更新了加密過程稚失。

前言

那天,本屌絲終于回憶起被人掃了數(shù)據(jù)庫的恐懼恰聘。句各。。整個數(shù)據(jù)庫無緣無故的消失晴叨,看了一下鏈接記錄凿宾,我不得不接受這個現(xiàn)實,就算不是商業(yè)的東西篙螟,只要上線就有被攻擊的可能性菌湃。痛定思痛,我決心給mongodb上用戶認證遍略,和端口權(quán)限惧所。

這篇文章就是這個血的教訓(xùn)之后的成果。

環(huán)境為云服務(wù)器centos系統(tǒng)绪杏。 --fork 永久運行mongodb下愈。

添加超級管理員

首先,運行你的數(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)限用戶去關(guā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ù)庫中可用赁豆,賦予用戶所有分片和復(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)限

啟動auth模式

在創(chuàng)建完超級管理員后,才能真正啟動加密的數(shù)據(jù)庫蛤吓,否則即使你自己也無權(quán)去操作數(shù)據(jù)庫宵喂。

 //后臺模式需要在shell中關(guān)閉之前的普通模式數(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,簡單的加密就完成了泼疑。
 

![Uploading image_013130.png . . .]

加密成功德绿,需要認證才能操作數(shù)據(jù)庫

鏈接加密數(shù)據(jù)庫

數(shù)據(jù)庫加密后我們的服務(wù)端代碼也要相應(yīng)變動。


xxx.db('mongodb://your name: your pwd@localhost:27017/db?authSource=admin');

xxx表示你用的插件 比如 mongoose 、mongoskin之類的移稳。

到此為止蕴纳,你的數(shù)據(jù)庫就加密完成了,當你的項目變大个粱,你也許還需要創(chuàng)建許多用戶古毛,或者升級用戶權(quán)限,這些官方都有相關(guān)的API去操作几蜻。

本文主要簡單介紹了一下主要的加密過程喇潘,還有很多相關(guān)的東西,有需要可以自己查看官方文檔梭稚。

傳送門: docs.mongodb

總結(jié)

這次的慘痛教訓(xùn)讓我在云服務(wù)器部署網(wǎng)站再也不那么隨便了颖低,不能因為只是個小東西 小demo就放松啊。弧烤。忱屑。,不能開放的端口絕對不能開暇昂,
比如mongo的 27017 28017端口莺戒,我們都不能在服務(wù)器端口中開放。
不要止于前端急波,必要的后端和服務(wù)器知識从铲,有時候說不定會讓你思考出不一樣的火花。
該加密的東西還是要加密的澄暮。前端之路遠且長名段,與諸君共勉。

完整的代碼可以在我的Github閱讀泣懊,對博客有興趣可以自行fork源碼~

如果覺得本文對你有所幫助伸辟,就star一下吧~大傳送之術(shù)! 我的博客Github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馍刮,一起剝皮案震驚了整個濱河市信夫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卡啰,老刑警劉巖静稻,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異碎乃,居然都是意外死亡姊扔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門梅誓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恰梢,“玉大人佛南,你說我怎么就攤上這事∏堆裕” “怎么了嗅回?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摧茴。 經(jīng)常有香客問我绵载,道長,這世上最難降的妖魔是什么苛白? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任娃豹,我火速辦了婚禮,結(jié)果婚禮上购裙,老公的妹妹穿的比我還像新娘懂版。我一直安慰自己,他們只是感情好躏率,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布躯畴。 她就那樣靜靜地躺著,像睡著了一般薇芝。 火紅的嫁衣襯著肌膚如雪蓬抄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天夯到,我揣著相機與錄音嚷缭,去河邊找鬼。 笑死耍贾,一個胖子當著我的面吹牛峭状,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逼争,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼劝赔!你這毒婦竟也來了誓焦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤着帽,失蹤者是張志新(化名)和其女友劉穎杂伟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仍翰,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡赫粥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了予借。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片越平。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡频蛔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出秦叛,到底是詐尸還是另有隱情晦溪,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布挣跋,位于F島的核電站三圆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏避咆。R本人自食惡果不足惜舟肉,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望查库。 院中可真熱鬧路媚,春花似錦、人聲如沸膨报。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽现柠。三九已至院领,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間够吩,已是汗流浹背比然。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留周循,地道東北人强法。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像湾笛,于是被迫代替她去往敵國和親饮怯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理嚎研,服務(wù)發(fā)現(xiàn)蓖墅,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 需要原文的可以留下郵箱我給你發(fā)临扮,這里的文章少了很多圖论矾,懶得網(wǎng)上粘啦 1數(shù)據(jù)庫基礎(chǔ) 1.1數(shù)據(jù)庫定義 1)數(shù)據(jù)庫(D...
    極簡純粹_閱讀 7,428評論 0 46
  • 摘要:8月24日,阿里云數(shù)據(jù)庫技術(shù)峰會到來杆勇,本次技術(shù)峰會邀請到了阿里集團和阿里云數(shù)據(jù)庫老司機們贪壳,為大家分享了一線數(shù)...
    肆虐的悲傷閱讀 658評論 1 4
  • 攝影、整理:十三蚜退、丹尼二狗 Q:Snake之前幾場比賽的戰(zhàn)績并不是很好闰靴,現(xiàn)在慢慢有所回升彪笼,隊伍方面做了怎樣的調(diào)整呢...
    PentaQ刺猬電競社閱讀 289評論 0 0