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

MongoDB角色权限失效:只读用户可操作任意数据库

MongoDB权限异常排查问题

启动及登录方式

mongod --auth

mongosh --username 'kaito' --password 'kaito' --authenticationDatabase kaito --host 10.0.0.111

创建的用户信息

[
  {
    _id: 'kaito.kaito',
    userId: UUID('f104a209-fe36-4b19-99c0-515a45938e30'),
    user: 'kaito',
    db: 'kaito',
    roles: [ { role: 'read', db: 'kaito' } ],
    mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
  }
]

问题

预期该用户仅能读取kaito数据库,但实际它可对任意数据库执行任意操作。请问忽略了什么?

执行db.adminCommand({getCmdLineOpts: 1})返回结果

{
  argv: [ '/usr/bin/mongod', '--config', '/etc/mongod.conf' ],
  parsed: {
    config: '/etc/mongod.conf',
    net: { bindIp: '0.0.0.0', port: 27017 },
    processManagement: { timeZoneInfo: '/usr/share/zoneinfo' },
    storage: { dbPath: '/var/lib/mongodb', journal: { enabled: true } },
    systemLog: { destination: 'file', logAppend: true, path: '/var/log/mongodb/mongod.log' }
  },
  ok: 1
}

排查结论

核心问题是你启动时指定的--auth参数并未生效。从getCmdLineOpts的返回结果可以看到,mongod实际加载了/etc/mongod.conf配置文件,但该配置里没有开启权限控制,且配置文件的优先级高于命令行参数,导致--auth被覆盖。

解决步骤:

  1. 打开/etc/mongod.conf,添加或启用权限配置:
security:
  authorization: enabled
  1. 重启mongod服务,让配置生效。

此时权限控制会正常启用,kaito用户将仅拥有kaito数据库的只读权限,无法操作其他数据库。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:45:06