MongoDB權限設置--用戶名龄寞、密碼、端口

一汤功、關于權限的默認設置
  • 在默認情況下物邑,mongod是監(jiān)聽在0.0.0.0之上的,任何客戶端都可以直接連接27017滔金,且沒有認證拂封。這樣做的好處是,用戶可以即時上手鹦蠕,不用擔心被一堆配置弄的心煩意亂。壞處則是如果直接在公網服務器上如此搭建MongoDB在抛,那么所有人都可以直接訪問并修改數(shù)據(jù)庫數(shù)據(jù)了钟病。
  • 默認情況下,mongod也是沒有管理員賬戶的刚梭。因此除非你在admin數(shù)據(jù)庫中使用db.addUser()命令添加了管理員帳號肠阱,且使用–auth參數(shù)啟動mongod,否則在數(shù)據(jù)庫中任何人都可以無需認證執(zhí)行所有命令朴读。包括delete和shutdown屹徘。
MongoDB用戶類型
  • MongoDB的用戶分為兩種,一種是admin用戶衅金,另一種是特定數(shù)據(jù)庫用戶噪伊。admin用戶擁有最高的權限,而特定數(shù)據(jù)庫用戶則只能訪問特定的數(shù)據(jù)庫氮唯。
  • 當MongoDB的admin庫里沒有任何用戶的時候鉴吹,也就是說整個MongoDB沒有一個MongoDB用戶的時候,即便–auth權限需求打開了惩琉,用戶還是可以通過localhost界面進入MongoDB進行用戶設置豆励,否則的話整個MongoDB就完全沒法訪問了。而當這個用戶創(chuàng)建完成之后瞒渠,之后的用戶登錄和操作就需要授權了良蒸,不是直接登錄就能使用的了技扼。
  • MongoDB有一個比較奇怪的設置是,即便是一個admin用戶嫩痰,授權也必須在admin數(shù)據(jù)庫下進行剿吻,而不能在其他數(shù)據(jù)庫下進行。而授權之后admin用戶就可以在任何數(shù)據(jù)庫下進行任何操作了始赎。當然數(shù)據(jù)庫級別的用戶在他自己的數(shù)據(jù)庫下授權之后是不能到其他數(shù)據(jù)庫進行操作的和橙。舉例來說:
> use test
> db.auth(“someAdminUser”, password)
//操作失敗,提示還沒有在admin數(shù)據(jù)庫下對afmin用戶進行授權造垛。
三魔招、操作實例

啟動MongoDB,在cmd命令框里進入數(shù)據(jù)庫的bin目錄五辽;

  1. 輸入命令:show dbs办斑,你會發(fā)現(xiàn)它內置有兩個數(shù)據(jù)庫,一個名為admin杆逗,一個名為local乡翅;
  2. 輸入命令:use admin,你會發(fā)現(xiàn)該db下包含了一個名為system.user的collection罪郊,這是用戶表蠕蚜,用來存放超級管理員;
  3. 輸入命令:
db.createUser(
... {
... user:"root",
... pwd:"root",
... roles:["userAdminAnyDatabase"]
... }
... )

添加一個超級管理員用戶,username為root悔橄,password也為root靶累。先退出 (ctrl+c)程序,測試重啟服務后再次連接MongoDB是否需要按提示輸入用戶名癣疟、密碼進行操作;

  1. 輸入命令:use admin
  2. 輸入命令:show collections挣柬,查看該庫下所有的表,你會發(fā)現(xiàn)睛挚,MongoDB并沒有提示你輸入用戶名邪蛔、密碼,原因是MongoDB默認設置為無權限訪問限制扎狱,我們需要先把它設置成為需要權限訪問;
  3. 從新打開cmd侧到,在mongodb路徑的bin目錄下,執(zhí)行./mongod -f mongodb.conf --auth./mongo
  4. 輸入命令:use admin
  5. 輸入命令:show collections委乌,提示:"errmsg" : "not authorized on admin to execute command { listCollections: 1.0, filter: {}, $db: "admin" }",
    顯然床牧,已經提示沒有權限;需要用剛才設置的用戶名遭贸、密碼來訪問集合
  6. 輸入命令:db.auth(“root”,”root”)戈咳,輸出一個結果值為1,說明這個用戶匹配上了,如果用戶名著蛙、密碼不對删铃,輸出為0
  7. 輸入命令:show collections,將成功顯示結果
    繼續(xù)操作踏堡,可以訪問已經存在的數(shù)據(jù)庫猎唁,但對于新建的數(shù)據(jù)庫仍然沒有權限;繼續(xù)操作顷蟆,先退出(ctrl+c)服務
  8. 輸入命令:mongo TestDB
  9. 輸入命令:show collections诫隅,提示:沒有權限
  10. 輸入命令:db.auth(“root”, “root”),輸出結果為0帐偎,說明用戶名或者密碼有問題逐纬,剛剛前面才創(chuàng)建,怎么會不對呢削樊?原因在于:當我們單獨訪問MongoDB的數(shù)據(jù)庫時豁生,需要權限訪問的情況下,用戶名密碼并非超級管理員漫贞,而是該庫的system.user表中的用戶甸箱,注意,我這里說的是單獨訪問的情況迅脐,什么是不單獨訪問的情況呢芍殖?后面再講。針對上述情況谴蔑,接下來操作:
  11. 輸入命令:db.addUser('test','111111')围小,仍然提示沒有權限,新的數(shù)據(jù)庫使用超級管理員也無法訪問树碱,創(chuàng)建用戶也沒有權限,不過即然設定了超級管理員用戶变秦,那它就一定有權限訪問所有的庫
  12. 輸入命令:use admin
  13. 輸入命令:db.auth(“root”, “root”)
  14. 輸入命令:use TestDB
  15. 輸入命令:show collections成榜,之后可以利用超級管理員用戶訪問其它庫了,這個就是不單獨訪問的情況蹦玫。在上述操作過程中赎婚,我們是先進入admin庫,再轉到其它庫來的樱溉,admin相當于是一個最高級別用戶所在的區(qū)域挣输,對數(shù)據(jù)庫操作,需要經過最高級別用戶福贞,之后可以創(chuàng)建每個數(shù)據(jù)庫的用戶撩嚼。
  16. 輸入命令:db.addUser('test','12345'),我們給TestDB庫添加一個用戶,以后每次訪問該庫完丽,我都使用剛剛創(chuàng)建的這個用戶恋技,我們先退出(ctrl+c)
  17. 輸入命令:mongo TestDB
  18. 輸入命令:show collections,提示沒有權限
  19. 輸入命令:db.auth('test','12345')逻族,輸出結果1蜻底,用戶存在,驗證成功
  20. 輸入命令:show collections聘鳞,成功顯示結果
可能需要用到的操作
  • 查看關于mongo的線程
ps -ef | grep mongo
//查詢結果示例
lujiafengdeMBP:~ lujiafeng$ ps -ef | grep mongo
  501  2575     1   0  5:04下午 ??         0:01.51 ./mongod -f mongodb.conf
  501  2583  1247   0  5:05下午 ttys000    0:00.11 ./mongo
  501  2585  2463   0  5:05下午 ttys001    0:00.00 grep mongo
  • 殺死線程
kill 1247
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末薄辅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子抠璃,更是在濱河造成了極大的恐慌站楚,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸡典,死亡現(xiàn)場離奇詭異源请,居然都是意外死亡,警方通過查閱死者的電腦和手機彻况,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門谁尸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纽甘,你說我怎么就攤上這事良蛮。” “怎么了悍赢?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵决瞳,是天一觀的道長。 經常有香客問我左权,道長皮胡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任赏迟,我火速辦了婚禮屡贺,結果婚禮上,老公的妹妹穿的比我還像新娘锌杀。我一直安慰自己甩栈,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布糕再。 她就那樣靜靜地躺著量没,像睡著了一般。 火紅的嫁衣襯著肌膚如雪突想。 梳的紋絲不亂的頭發(fā)上殴蹄,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天究抓,我揣著相機與錄音,去河邊找鬼饶套。 笑死漩蟆,一個胖子當著我的面吹牛,可吹牛的內容都是我干的妓蛮。 我是一名探鬼主播怠李,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛤克!你這毒婦竟也來了捺癞?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤构挤,失蹤者是張志新(化名)和其女友劉穎髓介,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筋现,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡唐础,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了矾飞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片一膨。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖洒沦,靈堂內的尸體忽然破棺而出豹绪,到底是詐尸還是另有隱情,我是刑警寧澤申眼,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布瞒津,位于F島的核電站,受9級特大地震影響括尸,放射性物質發(fā)生泄漏巷蚪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一濒翻、第九天 我趴在偏房一處隱蔽的房頂上張望钓辆。 院中可真熱鬧,春花似錦肴焊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啸臀,卻和暖如春届宠,著一層夾襖步出監(jiān)牢的瞬間烁落,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工豌注, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伤塌,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓轧铁,卻偏偏與公主長得像每聪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子齿风,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容