You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MongoDB 4.2执行createUser命令报错需认证,求技术解决方案

解决MongoDB 4.2创建用户时的"command createUser requires authentication"报错

嘿,我来帮你搞定这个头疼的问题!这个报错的核心原因其实很明确:你已经在配置里开启了auth = true,但还没有创建第一个管理员用户,而且操作时没利用MongoDB的localhost例外机制,也没选对正确的数据库。

问题根源

MongoDB开启认证后,默认所有操作都需要权限验证,但有个特殊的"localhost例外":当数据库里还没有任何用户的时候,从本地(127.0.0.1)发起的连接可以绕过认证,专门用来创建第一个超级管理员用户。但这个操作必须在admin数据库下执行——如果你之前是在其他数据库(比如默认的test库)里跑createUser命令,就会触发这个报错。

一步步解决步骤

  1. 本地连接MongoShell
    因为你的配置里bind_ip = 127.0.0.1,直接在服务器本地执行以下命令进入shell:

    mongo --port 27017
    
  2. 切换到admin数据库
    超级管理员用户必须创建在admin库下,执行:

    use admin
    
  3. 执行创建用户命令
    现在运行你的创建命令(注意格式要正确):

    db.createUser(
      {
        user: "jhyunetp1",
        pwd: passwordPrompt(), // 执行后会提示你输入密码
        roles: ["root"]
      }
    )
    

    输入密码后,如果看到Successfully added user...的提示,就说明创建成功了。

  4. 验证认证登录
    退出当前shell,用新创建的用户重新登录:

    mongo --port 27017 -u "jhyunetp1" -p --authenticationDatabase "admin"
    

    输入密码后,你就能正常执行所有有权限的操作了。

额外注意点

  • 确保你的MongoDB服务确实是按当前配置(auth=true)运行的,如果之前修改了配置,记得重启服务生效。
  • 这个方法只适用于本地连接,远程连接需要等你创建好管理员用户后,用认证方式连接才行。

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

火山引擎 最新活动