【MongoDB】用戶驗證與權限管理

說明

首先,創建mongodb用戶驗證的過程是:
以不開啓用戶驗證的方式開啓mongo—進入mongo創建管理員(如果需要再創建其他管理員)—重啓mongo並使用賬號訪問數據庫。

在創建任何用戶之前需要創建一個管理員來管控這些賬號。例如創建、修改用戶的使用權限,都需要通過管理員進行;管理員不用於讀寫某個數據庫,而是用於管理其他的用戶賬號。

在哪個數據庫下創建的賬號,就要在哪個數據庫下登錄。


創建管理員

進入mongo的界面,然後:

use admin
db.createUser(  
  { user: "superuser",  
    pwd: "superuserpwd",  
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  
  }  
) 

上面的指令創建了一個管理員superuser,
密碼是superuserpwd,
角色是管理員(userAdminAnyDatabase),
是在admin這個數據庫下創建的

創建普通用戶

> db.createUser({
    user:"normal_user",
    pwd:"123456",
    roles:[
    	{role:"readWrite",db:"database_name"},
        {role:"readWrite",db:"another_database_name"},
        'read'// 對其他數據庫有隻讀權限,對db001、db002是讀寫權限
    ]
})

角色說明

常用的角色如下:

read:允許用戶讀取指定數據庫;
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限;
readWrite:允許用戶讀寫指定數據庫;
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限;
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile;
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限;
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和複製集相關函數的管理權限;
userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫裏創建、刪除和管理用戶;
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限;
root:只在admin數據庫中可用。超級賬號,超級權限;

如果需要對某個數據庫下集合使用find、count函數,需要給這個賬號readWrite權限(給read權限是不夠的)

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