MongoDB授權管理

2021-06-28 18:21:22 字數 3066 閱讀 3994

一、mongodb的訪問控制

mongodb在本機安裝部署好後

1. 輸入命令:show dbs,你會發現它內建有兩個資料庫,乙個名為admin,乙個名為local。

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

引數,這樣我們設定的許可權才能生效,好,接下來我們使用剛剛之前設定的使用者名稱、密碼來訪問

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

10. 輸入命令:show collections,結果出來了。接著測試,退出客戶端,重新連線。

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庫,再轉到其它庫來。

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增加使用者認證:增加使用者、刪除使用者、修改使用者密碼、讀寫許可權、唯讀許可權

說明:增加使用者是針對資料庫進行操作  

1.進入到資料庫 use dbname

2.針對當前資料庫新增使用者 許可權是針對當前資料

1.新增並驗證使用者

> use admin

> db.adduser("zjx","tsjianxin")

> db.auth("zjx","tsjianxin")

2.檢視已存在的使用者

> db.system.users.find()

3.現在來給另乙個資料庫51cv配置乙個讀寫許可權的使用者

> use 51cv

> db.adduser("51cvrw","51cv")

..."readonly" : false...

4.配置乙個唯讀許可權的使用者

> use 51cv

> db.adduser("51cvr","51cv",true)

> db.system.users.find()

..."readonly" : true...

5.刪除使用者

> use dbname (admin or 51cv ,etc)

> db.system.users.remove()

> db.system.users.find()

6.使用者登入資料庫測試

for:mongod dbname -u uname -p password

mongo admin -u zjx -p tsjianxin

/usr/local/mongodb/bin/mongo admin -u 使用者名稱 -p  密碼 --port 埠號

7.修改使用者密碼

(1)利用db.adduser

> db.adduser(

'zjx'

,'111'

)有人會問,這個不是新增使用者的方法嗎。不錯這是新增使用者的方法,但是如果使用者名稱相同,密碼不同的話,就會更新密碼。

(2)利用db.changeuserpassword

> db.changeuserpassword(

'zjx'

,'test'

); 

mongodb授權登入

mongodb版本為3.2 目前最新 演示的是linux下的mongodb授權認證 第一次登入不啟動授權 mongo預設不啟動 mongod dbpath home db data logpath home db logs mongodb.log接著使用 mongo 命令連線資料庫 mongo切換到...

mongodb使用者授權

1 登入admin 資料庫,admin是隱藏的資料庫,為mongodb的超級管理員資料表 mongo admin 新建使用者 db.createuser 普通資料庫許可權設定參考 readwrite,dbadmin,useradmin 驗證使用者授權 db.auth root 123456 為其他資...

Polkit授權管理

polkit的配置 乙個是agent,乙個是polkit服務 polkit.addrule function action,subject 讓所有的屬於wheel組的使用者且action id字首為 com.的操作都不用輸入密碼。更詳細的例子可以檢視此目錄下的規則檔案。org.freedesktop...