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

Linux环境下Mongo连接字符串报错HostAndPort: host is empty求助

解决MongoDB 2.4.14 URI连接报错"Assertion: 13110:HostAndPort: host is empty"的问题

这个问题我之前碰到过,核心原因是MongoDB 2.4.x版本对URI格式的解析非常严格,带特殊字符的密码必须做URL编码才能被正确识别。而你用--username和--password参数连接时,shell的单引号已经帮你屏蔽了特殊字符的解析冲突,所以能正常连接。

下面是具体的解决步骤:

1. 对密码中的特殊字符做URL编码

MongoDB连接URI遵循URL规则,密码里的特殊字符(比如@、$、!、/、:这些)会被当成URI的分隔符,直接导致解析错误——比如如果密码里有@,Mongo会误以为这是用户名和主机地址的分隔符,把主机部分解析为空,就出现了你看到的报错。

你需要把密码里的每个特殊字符转换成对应的URL编码,常见的转换对应关系:

  • @ → %40
  • $ → %24
  • ! → %21
  • # → %23
  • / → %2F
  • : → %3A
  • ' → %27

举个例子,如果你的密码是P@ss$123!,转义后就变成P%40ss%24123%21。

2. 构建正确的URI并测试连接

把编码后的密码替换到URI中,执行连接命令:

mongo mongodb://USERXPTO:ENCODED_PASS@127.0.0.1:MONGOPORT/DB_Y

如果还是有问题,试试加上--uri参数并把整个URI用双引号括起来(避免shell解析干扰):

mongo --uri "mongodb://USERXPTO:ENCODED_PASS@127.0.0.1:MONGOPORT/DB_Y"

3. 额外建议

MongoDB 2.4.x是非常老旧的版本(已经停止维护多年),如果条件允许,建议升级到较新的稳定版本,不仅能避免这类兼容性问题,还能获得更好的安全性和性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:14:32