MongoDB 用戶權限管理


MongoDB 用戶權限管理手冊

https://docs.mongodb.com/manual/reference/method/js-user-management/

創建用戶

db.createUser(user, writeConcern);

db.createUser({ 
    user: "<name>",
    pwd: "<cleartext password>",
    customData: { <any information> },
    roles: [
        { role: "<role>", db: "<database>" } | "<role>",
        ...
    ]
});

參數詳解

user(需要創建的用戶信息)

  • user:新建用戶名
  • pwd:新建用戶密碼
  • customData:存放一些用戶相關的自定義數據
  • roles:數組類型,配置用戶的權限

常用權限

角色類型 權限級別
普通用戶角色 read、readWrite
數據庫管理員角色 dbAdmin、dbOwner、userAdmin
集群管理員角色 clusterAdmin、clusterManager、clusterMonitor、hostManager
數據庫備份與恢復角色 backup、restore
所有數據庫角色 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超級用戶角色 root
核心角色 __system

writeConcern(對寫操作時的異常處理機制)

下面我們列一下WriteConcern的幾種拋出異常的級別參數:

  • WriteConcern.NONE:沒有異常拋出
  • WriteConcern.NORMAL:僅拋出網絡錯誤異常,沒有服務器錯誤異常
  • WriteConcern.SAFE:拋出網絡錯誤異常、服務器錯誤異常;並等待服務器完成寫操作。
  • WriteConcern.MAJORITY: 拋出網絡錯誤異常、服務器錯誤異常;並等待一個主服務器完成寫操作。
  • WriteConcern.FSYNC_SAFE: 拋出網絡錯誤異常、服務器錯誤異常;寫操作等待服務器將數據刷新到磁盤。
  • WriteConcern.JOURNAL_SAFE:拋出網絡錯誤異常、服務器錯誤異常;寫操作等待服務器提交到磁盤的日志文件。
  • WriteConcern.REPLICAS_SAFE:拋出網絡錯誤異常、服務器錯誤異常;等待至少2台服務器完成寫操作。

代碼案例

db.createUser({ 
    user: "root",
    pwd: "123456",
    customData: {
        create_date: '2016-09-03'
    },
    roles: [
        {
            role: "read", 
            db: "db_test_one" 
        },{
            role: "userAdmin", 
            db: "db_test_two" 
        }
    ]
});

查找指定用戶

方法一

db.system.users.find()

方法二

db.getUser(username, args)

參數詳解

username:要查找的用戶名

args(查詢用戶時的附加參數)

  • showPrivileges:布爾值,默認為false。賢惠用戶的權限
  • showCredentials:布爾值,默認為false。顯示用戶的password hash

查找全部用戶

db.getUsers()

修改用戶

db.updateUser(username, update, writeConcern)

db.updateUser(
   "<username>",
   {
     customData : { <any information> },
     roles : [
               { role: "<role>", db: "<database>" } | "<role>",
               ...
             ],
     pwd: "<cleartext password>"
    },
    writeConcern: { <write concern> }
)

參數詳解

username:要查找的用戶名

update:更新后的數據

  • customData:設置用戶的自定義數據
  • roles:數組類型,設置用戶的角色
  • pwd:字符串類型,設置修改的用戶名

writeConcern:對寫操作時的異常處理機制,詳情參考db.createUser

代碼案例

db.updateUser(
    "root",{
        customData:{
            create_time:"2016-09-03",
            update_time:"2016-09-04"
        },
        pwd:"123456"
    }
)

修改用戶密碼

db.changeUserPassword(username, password)

參數詳解

username:要修改的用戶名

password:要修改的密碼

mechanism:密碼驗證機制

  • SCRAM-SHA-1
  • MONGODB-CR

digestPassword:布爾值,是否為加密密碼

刪除用戶

方式一

db.system.users.remove(query)

方式二

db.removeUser(username)

方式三

db.dropUser(username, writeConcern) //從當前數據庫刪除用戶

db.dropAllUsers(writeConcern) //從當前數據庫刪除所有用戶

用戶綁定角色

db.grantRolesToUser( "<username>", [ <roles> ], { <writeConcern> } )

用戶角色解綁

db.revokeRolesFromUser( "<username>", [ <roles> ], { <writeConcern> } )

用戶Shell登錄權限

db.auth( <username>, <password> )

db.auth( {
   user: <username>,
   pwd: <password>,
   mechanism: <authentication mechanism>,
   digestPassword: <boolean>
} )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM