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

