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>
} )