MongoDB用戶管理授權方式
更新時間:2026年04月16日 09:17:57 作者:RSQ博客
本文介紹了MongoDB角色類型及其授權模式,包括單個數據庫、多個數據庫、指定單個數據庫等授權方式,并提供了授權命令示例,注意新用戶需要在指定數據庫中創(chuàng)建,并且授權模式影響登錄串的指定方式
1 角色類型
- 數據庫用戶角色:
read、readWrite - 數據庫管理角色:
dbAdmin、dbOwner、userAdmin - 集群管理角色:
clusterAdmin、clusterManager、clusterMonitor、hostManager - 備份恢復角色:
backup、restore - 所有數據庫角色:
readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase - 超級用戶角色:
root
2 注意事項
授權常見的模式分兩種:
- 指定單個數據庫給用戶授權,此時需要先切換到指定數據庫名稱空間下,以
test為例,use test,然后進行相關的授權grantRolesToUser。新創(chuàng)建用戶時,以rsq用戶為例,需要在test數據庫中進行用戶的創(chuàng)建,注意rsq跟其它數據庫的用戶不通用,如果需要在test2數據庫中給rsq用戶授權,則需要在test2中也創(chuàng)建rsq用戶。此時mongo連接串需要指定相對應的數據庫才可以登錄,否則會報認證失敗。 - 指定多個數據庫給一個用戶授權,這種情況需要切換到
admin數據庫中,先對用戶進行admin數據庫的權限授權,如dbAdmin,授權完再給普通數據庫授權,這種情況不需要再進入到普通數據庫創(chuàng)建用戶,用戶是全局生效的。此時mongo連接串不需要指定具體的數據庫名稱也可以登錄
3 給單個數據庫授權
連接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false&authSource=test1
# 新建數據庫
use test1
# 新建一個測試collection
# 默認一個db中沒有collection,show dbs是看不到這個數據庫的
db.site.insert({"name":"test1"})
# 查看數據庫
show dbs
# 給新數據庫創(chuàng)建用戶,密碼跟之前保持一致
db.createUser({user: "test",pwd: "xxxxx",roles: [ { role: "dbOwner", db: "test1" } ]})
# 如果需要角色授權,則有如下命令
db.runCommand(
{
grantRolesToUser: "test",
roles:
[
{ role: "dbAdminAnyDatabase", db: "admin" }
]
}
)
4 給一個用戶授權多個數據庫
連接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false
# 需要進入到admin數據庫授權多個數據庫給同一個用戶
use admin
# 創(chuàng)建用戶
db.createUser({
user: "test",
pwd: "xxxxx",
roles: [
{
role: "dbAdmin", db: "admin"
},
{
role: "dbOwner", db: "test1"
},
{
role: "dbOwner", db: "test2"
},
{
role: "dbOwner", db: "test3"
}
]
})
5 其它命令
# 查看db相關權限
db.runCommand(
{
rolesInfo: { role: "readWrite", db: "" },
showPrivileges: true
}
)
# 查詢用戶
db.getUsers();
show users
# 刪除用戶
db.dropUser('admin')
# 修改用戶密碼
db.updateUser('admin', {pwd: '111111'})
# 創(chuàng)建管理員用戶,需要使用admin數據庫
use admin
db.createUser({user: "test",pwd: "xxxxx",roles: [ { role: "dbAdmin", db: "test" } ]})
# 回收用戶角色
db.revokeRolesFromUser(
"test",
[
{ role: "root", db: "admin" }
]
)
# 刪除數據庫
use percepai-cowa3d-corolla-v56tion
db.dropDatabase()
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
CentOS 6.4創(chuàng)建Mongodb副本集
這篇文章主要為大家詳細介紹了CentOS 6.4創(chuàng)建Mongodb副本集的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
mongodb exception: $concat only supports strings, not Number
這篇文章主要介紹了mongodb exception: $concat only supports strings, not NumberInt32解決辦法,需要的朋友可以參考下2014-06-06
SpringBoot系列之MongoDB?Aggregations用法詳解
MongoDB?中使用聚合(Aggregations)來分析數據并從中獲取有意義的信息,本文重點給大家介紹SpringBoot系列之MongoDB?Aggregations用法,感興趣的朋友跟隨小編一起看看吧2022-02-02

