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

MongoDB 4.2.23使用mongorestore恢复时认证失败求助

MongoDB 4.2.23 mongorestore 认证失败问题解决建议

1. 修正用户创建命令的语法错误

你创建用户时使用的db.create()是错误语法,MongoDB创建用户的正确命令为db.createUser(),且需在目标数据库(即你要恢复的MongoDB库)下执行:

use MongoDB
db.createUser({
  user: "new_user",
  pwd: passwordPrompt(),
  roles: ["readWrite", "dbAdmin"]
})

之前的错误命令并未成功创建用户,这是导致后续认证失败的核心原因之一。

2. 修正mongorestore命令的格式问题

你的初始恢复命令存在参数解析错误:

  • -u $admin与-p #password之间缺少空格,Shell会将$admin-p识别为一个变量名,导致参数传递异常
  • 若密码包含#这类特殊字符,必须用引号包裹,避免被Shell当作注释截断
    正确的命令格式示例:
# 使用管理员用户执行恢复
mongorestore -u "$admin" -p "#password" -d MongoDB --host=localhost:27017 acknowledgments.bson

# 使用新创建的用户执行恢复
mongorestore -u "new_user" -p "你的密码" -d MongoDB --host=localhost:27017 acknowledgments.bson

如果用环境变量存储用户名/密码,引用时务必加引号,避免特殊字符解析出错。

3. 显式指定认证数据库

MongoDB用户属于特定数据库(管理员用户默认在admin库),若你的管理员用户是在admin库创建的,必须添加--authenticationDatabase admin参数:

mongorestore -u "$admin" -p "#password" --authenticationDatabase admin -d MongoDB --host=localhost:27017 acknowledgments.bson

新创建的用户归属MongoDB库,显式指定认证数据库可避免潜在的匹配问题:

mongorestore -u "new_user" -p "你的密码" --authenticationDatabase MongoDB -d MongoDB --host=localhost:27017 acknowledgments.bson

4. 先验证用户登录权限

在执行恢复前,先用mongo命令测试用户能否正常登录,排除用户本身的配置问题:

# 测试管理员用户登录
mongo -u "$admin" -p "#password" --authenticationDatabase admin MongoDB

# 测试新用户登录
mongo -u "new_user" -p "你的密码" MongoDB

若登录失败,优先排查用户创建是否成功、密码是否正确,再进行恢复操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:25:21