温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mongodb如何做权限管理

发布时间:2026-11-07 21:23:53 来源:亿速云 阅读:96 作者:小樊 栏目:数据库

MongoDB 的权限管理主要基于 基于角色的访问控制(RBAC,Role-Based Access Control)。下面从概念、常见操作到最佳实践给你一个完整说明。


一、核心概念

1. 用户(User)

  • 每个用户属于某个 数据库
  • 一个用户可以被赋予多个 角色(Role)

2. 角色(Role)

  • 角色决定“能做什么”
  • MongoDB 内置很多角色,也支持自定义角色

3. 权限(Privilege)

  • 权限 = 资源(Resource)+ 操作(Action)
  • 例如:对 db1 的 readWrite

二、开启权限认证(必须)

默认 MongoDB 是不开认证的,生产环境一定要开。

1. 配置文件(mongod.conf)

security:
  authorization: enabled

重启 MongoDB:

mongod --config /etc/mongod.conf

三、用户与角色管理示例

1. 创建管理员用户(第一个用户)

use admin
db.createUser({
  user: "root",
  pwd: "strongpassword",
  roles: ["root"]
})

2. 创建数据库读写用户

use mydb
db.createUser({
  user: "appuser",
  pwd: "apppass",
  roles: [
    { role: "readWrite", db: "mydb" }
  ]
})

3. 创建只读用户

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 + 防火墙


如果你愿意,我可以:

  • 给你一个 权限设计模板
  • 或针对 Spring / Node / Python 的接入示例
  • 或讲 Atlas(云 MongoDB)的权限管理

你更想看哪一个?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手