MongoDB用戶、角色和權限管理

一、概念理解

1、用戶概念
Mongodb的用戶是由 用戶名+所屬庫名組成
例如:
登錄mongo testdb1 ,創建用戶testuser
登錄mongo testdb2 ,創建用戶testuserbr/>那上面創建的用戶分別是: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({user:'root',pwd:'root',roles:[{ "role" : "root", "db" : "admin" }]});

2、關閉mongodb

3、啓用認證參數
生成加密文件,並將加密文件拷貝到各節點
mkdir /usr/local/mongodb/keyfile
openssl rand -base64 100 > /usr/local/mongodb/keyfile/key
chmod -R 600 /usr/local/mongodb/keyfile/key
修改各節點配置配置文件
auth = true
keyFile = /usr/local/mongodb/keyfile/key

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();
{ "_id" : ObjectId("56f255b77fa46acddeb4507b"), "name" : "liujing" }

三、用戶授權詳解
1、創建用戶並授權
語法:db.createUser({user:"UserName",pwd:"Password",roles:[{role:"RoleName",db:"Target_DBName"}]})
首先選擇在哪個庫創建用戶,如test:use test;
創建用戶有3項需要提供:用戶名,密碼,角色列表
例如我要在test下面創建用testuser,密碼爲testpwd,角色列表包括test庫的readWrite角色和userAdmin角色:
db.createUser({user:"testuser",pwd:"testpwd",roles:[{role:"readWrite",db:"test"},{role:"userAdmin",db:"test"}]})

2、修改密碼
首先進入目標庫:use test
db.changeUserPassword('testuser','testPWD');

3、添加角色
首先進入目標庫:use test
db.grantRolesToUser( "testuser", [ { role: "read",db:"admin"} ] )

4、回收角色權限
首先進入目標庫:use test
db.revokeRolesFromUser("testuser",[ { role: "read",db:"admin"} ] )

5、刪除用戶
首先進入目標庫:use test
db.dropUser("testuser")

四、注意事項

1、MongodbVOE版本太低,可能導致遠程連接mongodb認證失敗,建議升級版本或者更換其它GUI工具
2、遠程連接Mongodb一定要把mongodb服務器的防火牆打開,否則連接不上

參考博文:
http://blog.csdn.net/dbabruce/article/details/50963956
http://blog.51cto.com/wjlking/1792629

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章