如何通过URI从本地文件夹恢复MongoDB至生产服务器?认证失败求助
用MongoDB URI恢复本地备份到生产服务器的解决方案
我来帮你搞定这个认证失败的问题!之前的命令出错大概率是因为认证时没指定正确的权限库,用MongoDB URI来指定连接信息会更清晰,还能避免参数顺序或格式的坑,下面是具体操作:
核心命令(URI格式)
直接用--uri参数替代零散的连接参数,把所有认证和地址信息整合到一个URI里,命令如下:
mongorestore --uri="mongodb://myusername:mypassword@10.10.10.10:27017/test_base?authSource=admin" "C:\My profile\Documents\mongo\test_base"
关键细节解释
URI结构拆解:
mongodb://:固定的MongoDB协议前缀myusername:mypassword:你的认证账号和密码10.10.10.10:27017:生产服务器的IP和端口test_base:要恢复的目标数据库authSource=admin:指定认证时使用的数据库(生产环境绝大多数账号是在admin库下创建的,这是之前认证失败的常见原因!如果你的账号是在test_base库创建的,可以改成authSource=test_base)
特殊情况处理:
- 如果密码里包含
@、:、/这类特殊字符,需要对密码做URL编码,比如密码是p@ssw0rd要改成p%40ssw0rd - 本地备份路径有空格时,用双引号把路径括起来(比如上面命令里的
"C:\My profile\Documents\mongo\test_base"),避免Windows解析路径出错 - 确保生产服务器的防火墙/安全组已经开放27017端口,并且你的本地IP被允许访问
- 确认
myusername账号拥有restore权限(或者更高的dbOwner权限),不然会出现权限不足的错误
- 如果密码里包含
为什么之前的命令会失败?
你之前的命令没指定--authenticationDatabase参数,MongoDB默认会用目标数据库test_base去认证,但如果你的账号是在admin库创建的,就会出现「Authentication failed」的错误。用URI的authSource参数可以直接指定认证库,完美解决这个问题。
内容的提问来源于stack exchange,提问作者Vagif
相关产品推荐
相关产品推荐

