最近遇到很多問mongodb使用者認證授權方面的問題,現在特記錄下來,與大家共享。
一、概念理解
1、使用者概念
mongodb的使用者是由 使用者名稱+所屬庫名組成
例如:登入mongo testdb1 ,建立使用者testuser
登入mongo testdb2 ,建立使用者testuser
那上面建立的使用者分別是:testuser@testdb1,testuser@testdb2
也就是說在哪個庫下面建立使用者,這個使用者就是哪個庫的
2、角色概念
mongodb的授權採用了角色授權的方法,每個角色包括一組許可權。
mongodb已經定義好了的角色叫內建角色,我們也可以自定義角色。
這兒主要介紹內建角色,mongodb內建角色包括下面幾類:
讀寫許可權: read/readwrite 讀寫庫的許可權
資料庫管理角色: dbadmin 某資料庫管理許可權
useradmin 某資料庫使用者的管理許可權,包括建立使用者,授權的管理
dbowner 某資料庫的所有者,擁有該庫的所有許可權,包括readwrite,dbadmin和useradmin許可權
集群許可權 :
備份和恢復角色: bakcup restore
所有資料庫角色: readanydatabase
readwriteanydatabase
dbadminanydatabase
useradminanydatabase
超級使用者角色: root
內部角色 : __system 不建議使用
二、搭建認證環境和認證登入
1、找到mongodb配置檔案,設定noauth=true
重啟mongodb後,登入admin賬號,建立乙個超級許可權使用者
use admin
db.createuser(]});
2、關閉mongodb
3、啟用認證引數
要保證許可權認證生效,需要在mongodb配置檔案中加入auth=true,同時取消掉noauth=true
4、啟動mongodb
5、認證登入
> use admin
switched to db admin
> db.auth('root','root')
1> use hong
switched to db hong
> show collections;
liujing
system.users
> db.liujing.find();
三、使用者授權詳解
1、建立使用者並授權
語法:db.createuser(]})
首先選擇在哪個庫建立使用者,如test:use test;
建立使用者有3項需要提供:使用者名稱,密碼,角色列表
例如我要在test下面建立用testuser,密碼為testpwd,角色列表包括test庫的readwrite角色和useradmin角色:
db.createuser(,]})
2、修改密碼
首先進入目標庫:use test
db.changeuserpassword('testuser','testpwd');
3、新增角色
首先進入目標庫:use test
db.grantrolestouser( "testuser", [ ] )
4、**角色許可權
首先進入目標庫:use test
db.revokerolesfromuser("testuser",[ ] )
5、刪除使用者
首先進入目標庫:use test
db.dropuser("testuser")
四、注意事項
1、mongodbvoe版本太低,可能導致遠端連線mongodb認證失敗,建議公升級版本或者更換其它gui工具
2、遠端連線mongodb一定要把mongodb伺服器的防火牆開啟,否則連線不上
MongoDB使用者的角色許可權
1 當前庫普通操作角色 read 查詢本庫的許可權 readwrite 增刪改查本庫的許可權 2 當前庫管理員操作角色 dbadmin 資料庫物件的管理操作,但沒有資料庫的讀寫許可權 useradmin 在本庫下建立使用者的許可權 dbowner 本庫所有操作的許可權 3 例項級別操作角色 read...
使用者 角色和許可權
我感覺,雖然很多人都可以做出乙個成員資格管理的模組,但是能做的好的並不是很多。其中,有對這個成員管理原理不清楚的,也有實現能力不強的,等等。我覺得,要想做好成員資格管理,首先必須對成員資格管理的概念和原理有較為深刻的認識。然後,有個好的設計和實現。所以,我將在下面和大家一起討論一下成員資格管理的概念...
mongodb之使用者 認證 角色 許可權管理
前言 使用者許可權管理很重要,只給需要的許可權,防止應用系統漏洞導致脫庫 authentication 認證識別,解決我是誰 authorization 操作授權,我能做什麼 mongodb cr 官方自定義實現認證機制,通過使用者名稱和密碼,通過challenge response方式,來識別和驗...