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

MongoDB无法创建用户及执行getUsers():admin库未授权执行命令

解决MongoDB执行getUsers()或创建用户时的未授权问题

我之前也碰到过完全一样的情况,这是因为你用新--dbpath启动的MongoDB实例默认没有启用身份验证,但同时admin数据库里还没有任何具备权限的用户,所以执行需要权限的命令时就会被拒绝。按照下面的步骤操作就能搞定:

步骤1:确保MongoDB实例未启用认证运行

如果你的MongoDB启动命令里加了--auth参数,先停止实例,然后重启时去掉这个参数,让实例在无认证模式下运行。这样你才能创建第一个管理员用户。

步骤2:创建超级管理员用户

打开MongoDB Shell,执行以下操作:

  1. 切换到admin数据库:
use admin
  1. 创建拥有最高权限的root用户(记得把密码换成你自己的强密码):
db.createUser({
  user: "admin_root",
  pwd: "YourStrongPassword123!",
  roles: [{ role: "root", db: "admin" }]
})

执行成功后会返回类似{ "ok" : 1 }的结果。

步骤3:重启MongoDB并启用认证

现在停止MongoDB实例,重启时加上--auth参数来启用身份验证。比如命令行启动:

mongod --dbpath /your/custom/db/path --auth

如果你用配置文件启动,在配置文件里添加或修改以下配置:

security:
  authorization: enabled

然后重启MongoDB服务。

步骤4:用管理员用户认证并操作

现在可以用刚才创建的管理员用户登录MongoDB了,有两种方式:

  • 启动Shell时直接认证:
mongo -u admin_root -p YourStrongPassword123! --authenticationDatabase admin
  • 进入Shell后再认证:
use admin
db.auth("admin_root", "YourStrongPassword123!")

认证成功后(返回1),再执行db.getUsers()就能正常获取用户列表,创建其他用户也不会再出现权限问题了。

额外提示

  • 不要用过于简单的密码,遵循MongoDB的密码安全要求;
  • 如果不需要超级权限,也可以给用户分配更精细的角色(比如dbOwner用于管理单个数据库),但初始管理员用root角色最方便;
  • 确保--dbpath指定的目录权限正确,MongoDB进程要有读写权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:04:09