MongoDB為用戶(hù)設(shè)置訪問(wèn)權(quán)限
更新時(shí)間:2012年11月23日 10:14:03 作者:
MongoDB已經(jīng)使用很長(zhǎng)一段時(shí)間了,基于MongoDB的數(shù)據(jù)存儲(chǔ)也一直沒(méi)有使用到權(quán)限訪問(wèn) MongoDB默認(rèn)設(shè)置為無(wú)權(quán)限訪問(wèn)限制
MongoDB已經(jīng)使用很長(zhǎng)一段時(shí)間了,基于MongoDB的數(shù)據(jù)存儲(chǔ)也一直沒(méi)有使用到權(quán)限訪問(wèn)(MongoDB默認(rèn)設(shè)置為無(wú)權(quán)限訪問(wèn)限制),今天特地花了一點(diǎn)時(shí)間研究了一下,研究成果如下:
注:研究成果基于Windows平臺(tái)
MongoDB在本機(jī)安裝部署好后
1. 輸入命令:show dbs,你會(huì)發(fā)現(xiàn)它內(nèi)置有兩個(gè)數(shù)據(jù)庫(kù),一個(gè)名為admin,一個(gè)名為local。local好像沒(méi)啥用,如果哪位在使用過(guò)程中發(fā)現(xiàn)了這個(gè)local表的用途,希望能夠留言提醒,那我們就專(zhuān)心來(lái)說(shuō)說(shuō)admin表
2. 輸入命令:use admin,你會(huì)發(fā)現(xiàn)該DB下包含了一個(gè)system.user表,呵呵,沒(méi)錯(cuò),這個(gè)表就等同于MsSql中的用戶(hù)表,用來(lái)存放超級(jí)管理員的,那我們就往它里面添加一個(gè)超級(jí)管理員試試看
3. 輸入命令:db.addUser('sa','sa'),這里我添加一個(gè)超級(jí)管理員用戶(hù),username為sa,password也為sa,即然我們添加了超級(jí)管理員,那咱們就來(lái)測(cè)試下,看看咱們?cè)俅芜B接MongoDB需不需要提示輸入用戶(hù)名、密碼,我們先退出來(lái)(ctrl+c)
4. 輸入命令:use admin
5. 輸入命令:show collections,查看該庫(kù)下所有的表,你會(huì)發(fā)現(xiàn),MongoDB并沒(méi)有提示你輸入用戶(hù)名、密碼,那就奇怪了,這是怎么回事呢?在文章最開(kāi)始提到了,
MongoDB默認(rèn)設(shè)置為無(wú)權(quán)限訪問(wèn)限制,即然這樣,那我們就先把它設(shè)置成為需要權(quán)限訪問(wèn)限制,咱們?cè)倏纯葱Ч趺丛O(shè)置呢?
6. 在注冊(cè)表中,找到MongoDB的節(jié)點(diǎn),在它的ImgPath中,我們修改一下,加入 -auth,如下所示:
"D:\Program Files\mongodb\bin\mongod" -dbpath e:\work\data\mongodb\db -logpath e:\work\data\mongodb\log -auth -service
7. 輸入命令:use admin
8. 輸入命令:show collections,呵呵,我們發(fā)現(xiàn)無(wú)法查看該庫(kù)下的表了,提示:"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",很明顯,提示沒(méi)有權(quán)限,看來(lái)關(guān)鍵就在于這里,我們?cè)趩?dòng)MongoDB時(shí),需要加上-auth參數(shù),這樣我們?cè)O(shè)置的權(quán)限才能生效,好,接下來(lái)我們使用剛剛之前設(shè)置的用戶(hù)名、密碼來(lái)訪問(wèn)
9. 輸入命令:db.auth('sa','sa'),輸出一個(gè)結(jié)果值為1,說(shuō)明這個(gè)用戶(hù)匹配上了,如果用戶(hù)名、密碼不對(duì),會(huì)輸入0
10. 輸入命令:show collections,呵呵,結(jié)果出來(lái)了,到這里,權(quán)限設(shè)置還只講到一多半,接著往下講,我們先退出來(lái)(ctrl+c)
11. 輸入命令:mongo TestDB,我們嘗試連接一個(gè)新的庫(kù)(無(wú)論這個(gè)庫(kù)是否存在,如果不存在,往該庫(kù)中添加數(shù)據(jù),會(huì)默認(rèn)創(chuàng)建該庫(kù)),然后,我們想看看該庫(kù)中的表
12. 輸入命令:show collections,好家伙,沒(méi)權(quán)限,我們輸入上面創(chuàng)建的用戶(hù)名、密碼
13. 輸入命令:db.auth('sa','sa'),輸入結(jié)果0,用戶(hù)不存在,這下有人可能就不明白了,剛剛前面才創(chuàng)建,怎么會(huì)不存在呢?原因在于:當(dāng)我們單獨(dú)訪問(wèn)MongoDB的數(shù)據(jù)庫(kù)時(shí),需要權(quán)限訪問(wèn)的情況下,用戶(hù)名密碼并非超級(jí)管理員,而是該庫(kù)的system.user表中的用戶(hù),注意,我這里說(shuō)的是單獨(dú)訪問(wèn)的情況,什么是不單獨(dú)訪問(wèn)的情況呢?接下來(lái)再講,現(xiàn)在咋辦,沒(méi)權(quán)限,那我們就嘗試給庫(kù)的system.user表中添加用戶(hù)
14. 輸入命令:db.addUser('test','111111'),哇靠,仍然提示沒(méi)有權(quán)限,這可咋辦,新的數(shù)據(jù)庫(kù)使用超級(jí)管理員也無(wú)法訪問(wèn),創(chuàng)建用戶(hù)也沒(méi)有權(quán)限,呵呵,別急,即然設(shè)定了超級(jí)管理員用戶(hù),那它就一定有權(quán)限訪問(wèn)所有的庫(kù)
15. 輸入命令:use admin
16. 輸入命令:db.auth('sa','sa')
17. 輸入命令:use TestDB
18. 輸入命令:show collections,哈哈,一路暢通無(wú)阻,我們發(fā)現(xiàn)可以利用超級(jí)管理員用戶(hù)訪問(wèn)其它庫(kù)了,呵呵,這個(gè)就是不單獨(dú)訪問(wèn)的情況,不難發(fā)現(xiàn),我們是先進(jìn)入admin庫(kù),再轉(zhuǎn)到其它庫(kù)來(lái)的,admin相當(dāng)于是一個(gè)最高級(jí)別官員所在區(qū)域,如果你是個(gè)地產(chǎn)商,想在地方弄個(gè)大工程做做,你想不經(jīng)過(guò)那些高級(jí)官員就做,這是行不通的,你需要先去到他們那里,送點(diǎn)禮,再順著下到地方,工程你就可以拿到手了,此言論僅為個(gè)人觀點(diǎn),不代表博客園;即然工程拿到手了,就要開(kāi)始建了,那我們不至于每加塊磚、添個(gè)瓦都得去和那幫高級(jí)官員打招呼吧,所以我們得讓這個(gè)工程合法化,咱們得把相關(guān)的手續(xù)和證件弄齊全,不至于是違建
19. 輸入命令:db.addUser('test','111111'),我們給TestDB庫(kù)添加一個(gè)用戶(hù),以后每次訪問(wèn)該庫(kù),我都使用剛剛創(chuàng)建的這個(gè)用戶(hù),我們先退出(ctrl+c)
20. 輸入命令:mongo TestDB
21. 輸入命令:show collections,提示沒(méi)有權(quán)限
22. 輸入命令:db.auth('test','111111'),輸出結(jié)果1,用戶(hù)存在,驗(yàn)證成功
23. 輸入命令:show collections,沒(méi)再提示我沒(méi)有權(quán)限,恭喜您,成功了
注:當(dāng)需要使用權(quán)限才能訪問(wèn)MongoDB時(shí),如果需要查看MongoDB中所有的庫(kù),我們只能通過(guò)超級(jí)管理員權(quán)限,輸入命令show dbs來(lái)查看了。
注:研究成果基于Windows平臺(tái)
MongoDB在本機(jī)安裝部署好后
1. 輸入命令:show dbs,你會(huì)發(fā)現(xiàn)它內(nèi)置有兩個(gè)數(shù)據(jù)庫(kù),一個(gè)名為admin,一個(gè)名為local。local好像沒(méi)啥用,如果哪位在使用過(guò)程中發(fā)現(xiàn)了這個(gè)local表的用途,希望能夠留言提醒,那我們就專(zhuān)心來(lái)說(shuō)說(shuō)admin表
2. 輸入命令:use admin,你會(huì)發(fā)現(xiàn)該DB下包含了一個(gè)system.user表,呵呵,沒(méi)錯(cuò),這個(gè)表就等同于MsSql中的用戶(hù)表,用來(lái)存放超級(jí)管理員的,那我們就往它里面添加一個(gè)超級(jí)管理員試試看
3. 輸入命令:db.addUser('sa','sa'),這里我添加一個(gè)超級(jí)管理員用戶(hù),username為sa,password也為sa,即然我們添加了超級(jí)管理員,那咱們就來(lái)測(cè)試下,看看咱們?cè)俅芜B接MongoDB需不需要提示輸入用戶(hù)名、密碼,我們先退出來(lái)(ctrl+c)
4. 輸入命令:use admin
5. 輸入命令:show collections,查看該庫(kù)下所有的表,你會(huì)發(fā)現(xiàn),MongoDB并沒(méi)有提示你輸入用戶(hù)名、密碼,那就奇怪了,這是怎么回事呢?在文章最開(kāi)始提到了,
MongoDB默認(rèn)設(shè)置為無(wú)權(quán)限訪問(wèn)限制,即然這樣,那我們就先把它設(shè)置成為需要權(quán)限訪問(wèn)限制,咱們?cè)倏纯葱Ч趺丛O(shè)置呢?
6. 在注冊(cè)表中,找到MongoDB的節(jié)點(diǎn),在它的ImgPath中,我們修改一下,加入 -auth,如下所示:
"D:\Program Files\mongodb\bin\mongod" -dbpath e:\work\data\mongodb\db -logpath e:\work\data\mongodb\log -auth -service
7. 輸入命令:use admin
8. 輸入命令:show collections,呵呵,我們發(fā)現(xiàn)無(wú)法查看該庫(kù)下的表了,提示:"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",很明顯,提示沒(méi)有權(quán)限,看來(lái)關(guān)鍵就在于這里,我們?cè)趩?dòng)MongoDB時(shí),需要加上-auth參數(shù),這樣我們?cè)O(shè)置的權(quán)限才能生效,好,接下來(lái)我們使用剛剛之前設(shè)置的用戶(hù)名、密碼來(lái)訪問(wèn)
9. 輸入命令:db.auth('sa','sa'),輸出一個(gè)結(jié)果值為1,說(shuō)明這個(gè)用戶(hù)匹配上了,如果用戶(hù)名、密碼不對(duì),會(huì)輸入0
10. 輸入命令:show collections,呵呵,結(jié)果出來(lái)了,到這里,權(quán)限設(shè)置還只講到一多半,接著往下講,我們先退出來(lái)(ctrl+c)
11. 輸入命令:mongo TestDB,我們嘗試連接一個(gè)新的庫(kù)(無(wú)論這個(gè)庫(kù)是否存在,如果不存在,往該庫(kù)中添加數(shù)據(jù),會(huì)默認(rèn)創(chuàng)建該庫(kù)),然后,我們想看看該庫(kù)中的表
12. 輸入命令:show collections,好家伙,沒(méi)權(quán)限,我們輸入上面創(chuàng)建的用戶(hù)名、密碼
13. 輸入命令:db.auth('sa','sa'),輸入結(jié)果0,用戶(hù)不存在,這下有人可能就不明白了,剛剛前面才創(chuàng)建,怎么會(huì)不存在呢?原因在于:當(dāng)我們單獨(dú)訪問(wèn)MongoDB的數(shù)據(jù)庫(kù)時(shí),需要權(quán)限訪問(wèn)的情況下,用戶(hù)名密碼并非超級(jí)管理員,而是該庫(kù)的system.user表中的用戶(hù),注意,我這里說(shuō)的是單獨(dú)訪問(wèn)的情況,什么是不單獨(dú)訪問(wèn)的情況呢?接下來(lái)再講,現(xiàn)在咋辦,沒(méi)權(quán)限,那我們就嘗試給庫(kù)的system.user表中添加用戶(hù)
14. 輸入命令:db.addUser('test','111111'),哇靠,仍然提示沒(méi)有權(quán)限,這可咋辦,新的數(shù)據(jù)庫(kù)使用超級(jí)管理員也無(wú)法訪問(wèn),創(chuàng)建用戶(hù)也沒(méi)有權(quán)限,呵呵,別急,即然設(shè)定了超級(jí)管理員用戶(hù),那它就一定有權(quán)限訪問(wèn)所有的庫(kù)
15. 輸入命令:use admin
16. 輸入命令:db.auth('sa','sa')
17. 輸入命令:use TestDB
18. 輸入命令:show collections,哈哈,一路暢通無(wú)阻,我們發(fā)現(xiàn)可以利用超級(jí)管理員用戶(hù)訪問(wèn)其它庫(kù)了,呵呵,這個(gè)就是不單獨(dú)訪問(wèn)的情況,不難發(fā)現(xiàn),我們是先進(jìn)入admin庫(kù),再轉(zhuǎn)到其它庫(kù)來(lái)的,admin相當(dāng)于是一個(gè)最高級(jí)別官員所在區(qū)域,如果你是個(gè)地產(chǎn)商,想在地方弄個(gè)大工程做做,你想不經(jīng)過(guò)那些高級(jí)官員就做,這是行不通的,你需要先去到他們那里,送點(diǎn)禮,再順著下到地方,工程你就可以拿到手了,此言論僅為個(gè)人觀點(diǎn),不代表博客園;即然工程拿到手了,就要開(kāi)始建了,那我們不至于每加塊磚、添個(gè)瓦都得去和那幫高級(jí)官員打招呼吧,所以我們得讓這個(gè)工程合法化,咱們得把相關(guān)的手續(xù)和證件弄齊全,不至于是違建
19. 輸入命令:db.addUser('test','111111'),我們給TestDB庫(kù)添加一個(gè)用戶(hù),以后每次訪問(wèn)該庫(kù),我都使用剛剛創(chuàng)建的這個(gè)用戶(hù),我們先退出(ctrl+c)
20. 輸入命令:mongo TestDB
21. 輸入命令:show collections,提示沒(méi)有權(quán)限
22. 輸入命令:db.auth('test','111111'),輸出結(jié)果1,用戶(hù)存在,驗(yàn)證成功
23. 輸入命令:show collections,沒(méi)再提示我沒(méi)有權(quán)限,恭喜您,成功了
注:當(dāng)需要使用權(quán)限才能訪問(wèn)MongoDB時(shí),如果需要查看MongoDB中所有的庫(kù),我們只能通過(guò)超級(jí)管理員權(quán)限,輸入命令show dbs來(lái)查看了。
您可能感興趣的文章:
- MongoDB 簡(jiǎn)單入門(mén)教程(安裝、基本概念、創(chuàng)建用戶(hù))
- MongoDB數(shù)據(jù)庫(kù)用戶(hù)角色和權(quán)限管理詳解
- MongoDB 用戶(hù)管理
- MongoDB在系統(tǒng)數(shù)據(jù)庫(kù)local中無(wú)法創(chuàng)建用戶(hù)的解決辦法
- mongodb基礎(chǔ)之用戶(hù)權(quán)限管理實(shí)例教程
- Mac下安裝配置mongodb并創(chuàng)建用戶(hù)的方法
- Mongodb 3.2.9開(kāi)啟用戶(hù)權(quán)限認(rèn)證問(wèn)題的步驟詳解
- MongoDB快速入門(mén)筆記(七)MongoDB的用戶(hù)管理操作
- MongoDB系列教程(四):設(shè)置用戶(hù)訪問(wèn)權(quán)限
- Windows下MongoDB配置用戶(hù)權(quán)限實(shí)例
- mongodb 添加用戶(hù)及權(quán)限設(shè)置詳解
- MongoDB 用戶(hù)相關(guān)操作
相關(guān)文章
MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mongodb具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09MongoDB查詢(xún)與游標(biāo)之分布式文件存儲(chǔ)
這篇文章主要介紹了MongoDB的查詢(xún)與游標(biāo),查詢(xún)就是返回集合中文檔的一個(gè)子集,子集的范圍從0個(gè)文檔到整個(gè)集合;游標(biāo)的客戶(hù)端實(shí)現(xiàn)通常能夠在很大程度上對(duì)查詢(xún)的最終輸出進(jìn)行控制;感興趣的同學(xué)可以參考閱讀2023-04-04SpringBoot系列之MongoDB?Aggregations用法詳解
MongoDB?中使用聚合(Aggregations)來(lái)分析數(shù)據(jù)并從中獲取有意義的信息,本文重點(diǎn)給大家介紹SpringBoot系列之MongoDB?Aggregations用法,感興趣的朋友跟隨小編一起看看吧2022-02-02mongodb中非常好用的Aggregate入門(mén)教程
這篇文章主要給大家介紹了關(guān)于mongodb中非常好用的Aggregate的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mongodb具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2018-12-12使用Mongodb實(shí)現(xiàn)打卡簽到系統(tǒng)的實(shí)例代碼
這篇文章主要介紹了使用Mongodb實(shí)現(xiàn)打卡簽到系統(tǒng)的示例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05利用MongoDB中oplog機(jī)制實(shí)現(xiàn)準(zhǔn)實(shí)時(shí)數(shù)據(jù)的操作監(jiān)控
MongoDB 的Replication是通過(guò)一個(gè)日志來(lái)存儲(chǔ)寫(xiě)操作的,這個(gè)日志就叫做oplog,而下面這篇文章主要給大家介紹了利用MongoDB中oplog機(jī)制實(shí)現(xiàn)準(zhǔn)實(shí)時(shí)數(shù)據(jù)的操作監(jiān)控的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-05-05MongoDB數(shù)據(jù)庫(kù)設(shè)置賬號(hào)密碼完整步驟
MongoDB這工具很好用的,頁(yè)面美觀,設(shè)置賬號(hào)密碼也必不可少,下面這篇文章主要給大家介紹了關(guān)于MongoDB數(shù)據(jù)庫(kù)設(shè)置賬號(hào)密碼的完整步驟,文中給出了詳細(xì)的實(shí)例代碼,需要的朋友可以參考下2023-05-05