MongoDB 4.2执行createUser命令报错需认证,求技术解决方案
解决MongoDB 4.2创建用户时的"command createUser requires authentication"报错
嘿,我来帮你搞定这个头疼的问题!这个报错的核心原因其实很明确:你已经在配置里开启了auth = true,但还没有创建第一个管理员用户,而且操作时没利用MongoDB的localhost例外机制,也没选对正确的数据库。
问题根源
MongoDB开启认证后,默认所有操作都需要权限验证,但有个特殊的"localhost例外":当数据库里还没有任何用户的时候,从本地(127.0.0.1)发起的连接可以绕过认证,专门用来创建第一个超级管理员用户。但这个操作必须在admin数据库下执行——如果你之前是在其他数据库(比如默认的test库)里跑createUser命令,就会触发这个报错。
一步步解决步骤
本地连接MongoShell
因为你的配置里bind_ip = 127.0.0.1,直接在服务器本地执行以下命令进入shell:mongo --port 27017切换到admin数据库
超级管理员用户必须创建在admin库下,执行:use admin执行创建用户命令
现在运行你的创建命令(注意格式要正确):db.createUser( { user: "jhyunetp1", pwd: passwordPrompt(), // 执行后会提示你输入密码 roles: ["root"] } )输入密码后,如果看到
Successfully added user...的提示,就说明创建成功了。验证认证登录
退出当前shell,用新创建的用户重新登录:mongo --port 27017 -u "jhyunetp1" -p --authenticationDatabase "admin"输入密码后,你就能正常执行所有有权限的操作了。
额外注意点
- 确保你的MongoDB服务确实是按当前配置(
auth=true)运行的,如果之前修改了配置,记得重启服务生效。 - 这个方法只适用于本地连接,远程连接需要等你创建好管理员用户后,用认证方式连接才行。
内容的提问来源于stack exchange,提问作者Antonio SEO




