mongoDB: 用戶權限-角色

1.創建管理賬號admin

mongo默認登錄不需要密碼
注意:賬號是在數據庫中創建的。
use admin;
db.createUser( {user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})

2.創建ROOT用戶

創建完admin管理員,創建一個 超級管理員 root 角色:root
root角色用於 關閉數據庫 db.shutdownServer()
db.createUser({user: "root",pwd: "123456",roles: [ { role: "root", db: "admin" } ]})

3. 開啓auth驗證

vim mongo.cnf
添加 auth=true 的配置

4.關閉 重啓

use admin;
db.shutdownServer()
./mongod --config mongo.cnf

5.創建數據庫以及賬號密碼

use testDB; #創建並切換數據庫
db.createUser({user: "testDB",pwd: "123456",roles: [ { role: "dbOwner", db: "testDB" } ]});

6.驗證

根據服務器設置的認證機制,選擇SCRAM-SHA-1或者MONGODB-CR等方式,默認爲SCRAM-SHA-1
連接命令
mongo -authenticationDatabase admin -u user -p pass -host hostname -port 27017 [--authenticationMechanism SCRAM-SHA-1]
./mongo -u testDB -p 123456 127.0.0.1:27017/testDB

7.權限的修改

授權:

use testDB;
db.grantRolesToUser("testDB", [{role:"readWrite",db:"testDB"}]) 

收回權限:

use testDB;
db.revokeRolesFromUser("testDB",[{role:"readWrite",db:"testDB"}]) 

8.修改用戶信息

db.updateUser("admin", #庫 
    { user: "root", #用戶名 
      pwd: "root", #密碼 
      roles: [ "root","userAdminAnyDatabase" ] #權限 
    } 
)

9.角色說明

內置角色: 

數據庫用戶角色:read、readWrite;
數據庫管理角色:dbAdmin、dbOwner、userAdmin;
集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
備份恢復角色:backup、restore;
所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超級用戶角色:root  // 間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
內部角色:__system

具體角色:

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

 

 

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