mongodb用戶權限管理最全攻略:用戶的建立、查看、刪除與修改,mongodb入坑之旅

一、進入mongodb的shell :

mongo

二、切換數據庫

use admin

三、建立admin超級管理員用戶

指定用戶的角色和數據庫:
(注意此時添加的用戶都只用於admin數據庫,而非你存儲業務數據的數據庫)
(在cmd中敲多行代碼時,直接敲回車換行,最後以分號首尾)
db.createUser(  
  { user: "admin",  
    customData:{description:"superuser"},
    pwd: "admin",  
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  
  }  
)
user字段,爲新用戶的名字;
pwd字段,用戶的密碼;
cusomData字段,爲任意內容,例如能夠爲用戶全名介紹;
roles字段,指定用戶的角色,能夠用一個空數組給新用戶設定空角色。在roles字段,能夠指定內置角色和用戶定義的角色。
超級用戶的role有兩種,userAdmin或者userAdminAnyDatabase(比前一種多加了對全部數據庫的訪問,僅僅是訪問而已)。
db是指定數據庫的名字,admin是管理數據庫。
不能用admin數據庫中的用戶登陸其餘數據庫。注:只能查看當前數據庫中的用戶,哪怕當前數據庫admin數據庫,也只能查看admin數據庫中建立的用戶。

四、建立一個不受訪問限制的超級用戶

(跳出三界以外,不在五行之中)
db.createUser(
    {
        user:"root",
        pwd:"pwd",
        roles:["root"]
    }
)

五、建立一個業務數據庫管理員用戶

(只負責某一個或幾個數據庫的増查改刪)
> db.createUser({
    user:"user001",
    pwd:"123456",
    customData:{
        name:'jim',
        email:'jim@qq.com',
        age:18,
    },
    roles:[
        {role:"readWrite",db:"db001"},
        {role:"readWrite",db:"db002"},
        'read'// 對其餘數據庫有隻讀權限,對db00一、db002是讀寫權限
    ]
})
  1. 數據庫用戶角色:read、readWrite;
  2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集羣管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
  4. 備份恢復角色:backup、restore;
  5. 全部數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超級用戶角色:root
  7. 內部角色:__system
  1. Read:容許用戶讀取指定數據庫
  2. readWrite:容許用戶讀寫指定數據庫
  3. dbAdmin:容許用戶在指定數據庫中執行管理函數,如索引建立、刪除,查看統計或訪問system.profile
  4. userAdmin:容許用戶向system.users集合寫入,能夠在指定數據庫裏建立、刪除和管理用戶
  5. clusterAdmin:只在admin數據庫中可用,賦予用戶全部分片和複製集相關函數的管理權限。
  6. readAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀權限
  7. readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀寫權限
  8. userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的userAdmin權限
  9. dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的dbAdmin權限。
  10. root:只在admin數據庫中可用。超級帳號,超級權限

六、查看建立的用戶

show users 或 db.system.users.find() 或 db.runCommand({usersInfo:"userName"})

七、修改密碼

use admin
db.changeUserPassword("username", "xxx")

八、修改密碼和用戶信息

db.runCommand(
    {
        updateUser:"username",
        pwd:"xxx",
        customData:{title:"xxx"}
    }
)

九、刪除數據庫用戶

use admin
db.dropUser('user001')

十、建立其餘數據管理員

// 登陸管理員用戶
use admin
db.auth('admin','admin')
// 切換至db001數據庫
use db001
// ... 増查改刪該數據庫專有用戶

重要的一步

啓用權限驗證(別TM的武裝了大半天,大門還一直開着,還抱怨我方防護塔怎麼一直被摧毀)
mongo --auth

或者修改mongo.conf,最後一行添加mongodb

#啓用權限訪問
auth=true

十一、從新啓動mongodb

net stop mongodb;
net start mongodb;

  1. 和用戶管理相關的操做基本都要在admin數據庫下運行,要先use admin;
  2. 若是在某個單一的數據庫下,那隻能對當前數據庫的權限進行操做;
  3. db.addUser是老版本的操做,如今版本也還能繼續使用,建立出來的user是帶有root role的超級管理員。
相關文章
相關標籤/搜索