MongoDB許可權管理之使用者名稱和密碼的操作

2022-04-08 04:06:07 字數 2561 閱讀 2338

mongodb許可權管理之使用者名稱和密碼的操作

mongodb已經使用很長一段時間了,基於mongodb的資料儲存也一直沒有使用到許可權訪問(mongodb預設設定為無許可權訪問限制),今天特地花了一點時間研究了一下,研究成果如下:

注:研究成果基於windows平台

mongodb在本機安裝部署好後

1. 輸入命令:show dbs,你會發現它內建有兩個資料庫,乙個名為admin,乙個名為local。local好像沒啥用,如果哪位在使用過程中發現了這個local表的用途,希望能夠留言提醒,那我們就專心來說說admin表

2. 輸入命令:use admin,你會發現該db下包含了乙個system.user表,呵呵,沒錯,這個表就等同於mssql中的使用者表,用來存放超級管理員的,那我們就往它裡面新增乙個超級管理員試試看

3. 輸入命令:db.adduser('sa','sa'),這裡我新增乙個超級管理員使用者,username為sa,password也為sa,即然我們添 加了超級管理員,那咱們就來測試下,看看咱們再次連線mongodb需不需要提示輸入使用者名稱、密碼,我們先退出來(ctrl+c)

4. 輸入命令:use admin

5. 輸入命令:show collections,檢視該庫下所有的表,你會發現,mongodb並沒有提示你輸入使用者名稱、密碼,那就奇怪了,這是怎麼回事呢?在文章最開始提到了,

mongodb預設設定為無許可權訪問限制,即然這樣,那我們就先把它設定成為需要許可權訪問限制,咱們再看看效果,怎麼設定呢?

6. 在登錄檔中,找到mongodb的節點,在它的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,呵呵,我們發現無法檢視該庫下的表了,提示:"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",很明顯,提示沒有許可權,看來關鍵就在於這裡,我們在啟動mongodb時,需要加上-auth引數,這樣我們設定的許可權才能生效,好,接下來我們使用剛剛之前設定的使用者名稱、密碼來訪問

9. 輸入命令:db.auth('sa','sa'),輸出乙個結果值為1,說明這個使用者匹配上了,如果使用者名稱、密碼不對,會輸入0

10. 輸入命令:show collections,呵呵,結果出來了,到這裡,許可權設定還只講到一多半,接著往下講,我們先退出來(ctrl+c)

11. 輸入命令:mongo testdb,我們嘗試連線乙個新的庫(無論這個庫是否存在,如果不存在,往該庫中新增資料,會預設建立該庫),然後,我們想看看該庫中的表

12. 輸入命令:show collections,好傢伙,沒許可權,我們輸入上面建立的使用者名稱、密碼

13. 輸入命令:db.auth('sa','sa'),輸入結果0,使用者不存在,這下有人可能就不明白了,剛剛前面才建立,怎麼會不存在呢?原因在於:當我們單獨訪問mongodb的資料庫時,需要許可權訪問的情況下,使用者名稱密碼並非超級管理員,而是該庫的system.user表中的使用者,注意,我這裡說的是單獨訪問的情況,什麼是不單獨訪問的情況呢?接下來再講,現在咋辦,沒許可權,那我們就嘗試給庫的system.user表中新增使用者

14. 輸入命令:db.adduser('test','111111'),哇靠,仍然提示沒有許可權,這可咋辦,新的資料庫使用超級管理員也無法訪問,建立使用者也沒有許可權,呵呵,別急,即然設定了超級管理員使用者,那它就一定有許可權訪問所有的庫

15. 輸入命令:use admin

16. 輸入命令:db.auth('sa','sa')

17. 輸入命令:use testdb

18. 輸入命令:show collections,哈哈,一路暢通無阻,我們發現可以利用超級管理員使用者訪問其它庫了,呵呵,這個就是不單獨訪問的 情況,不難發現,我們是先進入admin庫,再轉到其它庫來的,admin相當於是乙個最高端別**所在區域,如果你是個地產商,想在地方弄個大工程做 做,你想不經過那些高階**就做,這是行不通的,你需要先去到他們那裡,送點禮,再順著下到地方,工程你就可以拿到手了,此言論僅為個人觀點,不代表部落格 園;即然工程拿到手了,就要開始建了,那我們不至於每加塊磚、添個瓦都得去和那幫高階**打招呼吧,所以我們得讓這個工程合法化,咱們得把相關的手續和證 件弄齊全,不至於是違建

19. 輸入命令:db.adduser('test','111111'),我們給testdb庫新增乙個使用者,以後每次訪問該庫,我都使用剛剛建立的這個使用者,我們先退出(ctrl+c)

20. 輸入命令:mongo testdb

21. 輸入命令:show collections,提示沒有許可權

22. 輸入命令:db.auth('test','111111'),輸出結果1,使用者存在,驗證成功

23. 輸入命令:show collections,沒再提示我沒有許可權,恭喜您,成功了

好累啊!一口氣寫完,呵呵

注:當需要使用許可權才能訪問mongodb時,如果需要檢視mongodb中所有的庫,我們只能通過超級管理員許可權,輸入命令show dbs來檢視了。

mongodb許可權設定之使用者名稱 密碼 埠使用詳解

所有人都可以直接訪問並修改資料庫資料了。預設情況下,mongod也是沒有管理員賬戶的。因此除非你在admin資料庫中使用db.adduser 命令新增了管理員帳號,且使用 auth引數啟動mongod,否則在資料庫中任何人都可以無需認證執行所有命令。包括delete和shutdown。此外,mong...

mongodb 許可權設定 使用者名稱 密碼 埠

一 關於許可權的預設配置 在預設情況下,mongod是監聽在0.0.0.0之上的,任何客戶端都可以直接連線27017,且沒有認證。這樣做的好處是,使用者可以即時上手,不用擔心被一堆配置弄的心煩意亂。然而壞處也是顯而易見,如果直接在公網伺服器上如此搭建mongodb,那麼所有人都可以直接訪問並修改資料...

mongodb 使用者名稱 密碼

1.不需要登入的方式啟動mongodb 2.檢視當前的庫 linux mongo show dbs 顯示admin 和 local兩個庫 3 建乙個新的庫 zcydb linux mongo use zcydb 建立了新的庫 db 顯示當前所在的庫 show dbs 顯示所有的庫,但是新建的沒有列出...