天天看點

mongodb 3.0 使用者角色

詳情來自于官方:::https://docs.mongodb.com/master/reference/method/js-user-management/   

 MongoDB 3.0 安全權限通路控制,在添加使用者上面3.0版本和之前的版本有很大的差別,這裡就說明下3.0的添加使用者的方法。

環境、測試:

      在安裝MongoDB之後,先關閉auth認證,進入檢視資料庫,隻有一個local庫,admin庫是不存在的:

root@zhoujinyi:/usr/local/mongo4# mongo --port=27020
MongoDB shell version: 3.0.4
connecting to: 127.0.0.1:27020/test
2015-06-29T09:31:08.673-0400 I CONTROL  [initandlisten] 
> show dbs;
local  0.078GB      

現在需要建立一個帳号,該賬号需要有grant權限,即:賬号管理的授權權限。注意一點,帳号是跟着庫走的,是以在指定庫裡授權,必須也在指定庫裡驗證(auth)。

mongodb 3.0 使用者角色
> use admin
switched to db admin
> db.createUser(
...   {
...     user: "dba",
...     pwd: "dba",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
...   }
... )
Successfully added user: {
    "user" : "dba",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}      
mongodb 3.0 使用者角色

上面加粗的就是執行的指令:

user:使用者名

pwd:密碼

roles:指定使用者的角色,可以用一個空數組給新使用者設定空角色;在roles字段,可以指定内置角色和使用者定義的角色。role裡的角色可以選:

mongodb 3.0 使用者角色
Built-In Roles(内置角色):
    1. 資料庫使用者角色:read、readWrite;
    2. 資料庫管理角色:dbAdmin、dbOwner、userAdmin;
    3. 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 備份恢複角色:backup、restore;
    5. 所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超級使用者角色:root  
    // 這裡還有幾個角色間接或直接提供了系統超級使用者的通路(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 内部角色:__system
      
mongodb 3.0 使用者角色

具體角色: 

mongodb 3.0 使用者角色
Read:允許使用者讀取指定資料庫
readWrite:允許使用者讀寫指定資料庫
dbAdmin:允許使用者在指定資料庫中執行管理函數,如索引建立、删除,檢視統計或通路system.profile
userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、删除和管理使用者
clusterAdmin:隻在admin資料庫中可用,賦予使用者所有分片和複制集相關函數的管理權限。
readAnyDatabase:隻在admin資料庫中可用,賦予使用者所有資料庫的讀權限
readWriteAnyDatabase:隻在admin資料庫中可用,賦予使用者所有資料庫的讀寫權限
userAdminAnyDatabase:隻在admin資料庫中可用,賦予使用者所有資料庫的userAdmin權限
dbAdminAnyDatabase:隻在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin權限。
root:隻在admin資料庫中可用。超級賬号,超級權限      
mongodb 3.0 使用者角色

mongodb 使用者登陸是以基于資料庫的 例子如下: https://docs.mongodb.com/master/reference/method/js-user-management/

db.createUser({user:"lixiaomeng",pwd:"123",roles:[{role:"root",db:"admin"}]})

db.createUser({user:"lxm",pwd:"111",roles:[{role:"dbAdminAnyDatabase",db:"admin"}]})

db.createUser({user:"lixiaomeng",pwd:"111",roles:[{role:"dbOwner",db:"lxm1"}]})

db.auth("lixiaomeng","isolxm123");

mongo --host 127.0.0.1 --authenticationDatabase admin -u lixiaomeng -p