MongoDB 的权限管理主要基于 基于角色的访问控制(RBAC,Role-Based Access Control)。下面从概念、常见操作到最佳实践给你一个完整说明。
db1 的 readWrite默认 MongoDB 是不开认证的,生产环境一定要开。
security:
authorization: enabled
重启 MongoDB:
mongod --config /etc/mongod.conf
use admin
db.createUser({
user: "root",
pwd: "strongpassword",
roles: ["root"]
})
use mydb
db.createUser({
user: "appuser",
pwd: "apppass",
roles: [
{ role: "readWrite", db: "mydb" }
]
})
use mydb
db.createUser({
user: "readonly",
pwd: "readonlypass",
roles: [
{ role: "read", db: "mydb" }
]
})
| 角色 | 说明 |
|---|---|
| read | 读取数据 |
| readWrite | 读写数据 |
| dbAdmin | 数据库管理(索引、统计) |
| dbOwner | 数据库最高权限 |
| 角色 | 说明 |
|---|---|
| clusterAdmin | 集群管理 |
| userAdmin | 用户管理 |
| root | 超级管理员 |
use admin
db.createRole({
role: "reportRole",
privileges: [
{
resource: { db: "mydb", collection: "orders" },
actions: ["find"]
}
],
roles: []
})
给用户赋角色:
db.grantRolesToUser("appuser", ["reportRole"])
# 查看用户
db.getUsers()
# 删除用户
db.dropUser("appuser")
# 修改密码
db.changeUserPassword("appuser", "newpass")
# 收回角色
db.revokeRolesFromUser("appuser", ["readWrite"])
mongo -u appuser -p apppass --authenticationDatabase mydb
或 URI:
mongodb://appuser:apppass@localhost:27017/mydb
✅ 开启 authorization
✅ 不用 root 跑业务
✅ 按库、按角色最小化权限
✅ 使用强密码 / Secrets 管理
✅ 生产环境结合 TLS + 防火墙
如果你愿意,我可以:
你更想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。