You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置MongoDB用户实现完全只读权限(禁止数据更新)

MongoDB 完全只读用户配置方案

问题根源

你配置的read角色本身仅包含读取类权限(如find、dbStats、collStats),不允许写操作。当前能编辑现有条目,大概率是用户被额外分配了写权限(直接权限或继承自其他角色),或是目标集合存在单独的权限开放。

修复步骤

1. 核对目标用户身份

注意:你的用户文档中user字段值为user01(_id为admin.xyz是系统生成的标识),后续操作需以user01作为用户名。

2. 查看用户当前权限详情

切换至admin库,执行命令查看用户的完整权限配置:

use admin
db.getUser("user01")

重点检查roles和privileges字段,确认是否存在insert、update、delete、findAndModify这类写权限条目。

3. 重置为纯只读角色

执行以下命令清空用户所有直接权限,并仅保留目标数据库的read角色:

use admin
db.updateUser("user01", {
  roles: [
    { role: "read", db: "myDatabase01" },
    { role: "read", db: "myDatabase02" }
  ],
  privileges: [] // 移除所有直接分配的权限
})

4. 撤销集合级写权限(若存在)

如果目标数据库的集合单独给用户开放了写权限,执行命令批量撤销:

// 撤销myDatabase01和myDatabase02所有集合的写权限
use admin
db.runCommand({
  revokePrivilegesFromUser: "user01",
  privileges: [
    { resource: { db: "myDatabase01", collection: "" }, actions: ["insert", "update", "delete", "findAndModify"] },
    { resource: { db: "myDatabase02", collection: "" }, actions: ["insert", "update", "delete", "findAndModify"] }
  ]
})

5. 验证权限

使用user01重新连接数据库,尝试执行新增、编辑、删除操作,确认均被拒绝,仅能正常执行查询类操作。


内容的提问来源于stack exchange,提问作者suther

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 23:27:27