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
相关产品推荐
相关产品推荐

