問題提出:
熟悉mongodb的小伙伴們都知道啦桌,mongodb提供使用uri來訪問mongodb中的某個數(shù)據(jù)庫绒净。mongodb uri中包含了用戶名username、密碼password、主機ip、端口號port以及數(shù)據(jù)庫名dbname信息航唆,且這些信息之間通常使用:或者@或者/來分隔。mongodb uri的一般格式為:
?String uri ="mongodb://username:password@127.0.0.1:27017/dbname";
顯而易見院刁,如果username或者password中包含@和:這兩個特殊字符的話(比如username為ab@c糯钙,password為al:ex),程序?qū)o法分辨真正的username和password退腥。從而導致程序無法正常訪問mongodb任岸。
解決方案:
對username和password中包含的@和:進行url編碼,@的url編碼為%40阅虫,:的編碼為%3a演闭。(具體可以使用urlencode在線工具驗證不跟,網(wǎng)址:http://tool.chinaz.com/Tools/urlencode.aspx )
因此對于“username為ab@c颓帝,password為al:ex”這種情況,uri應該改為如下:
?String uri ="mongodb://ab%40c:al%3aex@127.0.0.1:27017/dbname";
注意:此處的數(shù)據(jù)庫名不可缺少窝革,否則訪問可能報錯购城,可以參考:http://www.reibang.com/p/7657a275c422。