2015-06-12 87 views
2

我正在使用想要使用Mongo Java庫連接到本地MongoDB實例但失敗的Scala框架。它用來連接的URI是:Mongo服務器接受來自shell的憑證,但不能從Java/Scala接口接收憑證

mongodb://user:[email protected]:27017/mydb 

這會導致拋出以下異常,當我嘗試更新的集合:

com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18} 

但是,如果我提取從URI參數,並給他們到了Mongo外殼:

$ mongo -u user -p pass --host localhost --port 27017 mydb 

......然後它讓我進入!任何人都可以提出爲什麼這可能是?

可能但不可能是相關的:在運行我的框架的原始環境中,一切運行正常,運行Ubuntu的戴爾筆記本電腦。現在我試圖在Virtualbox上運行Ubuntu的Mac筆記本電腦上運行它。一切應該幾乎(哈)相同,但顯然不是某種程度。

+0

我會檢查你的服務器是否接受遠程連接,如果你的shell使用與你的java應用程序不同的jdk,或者你的防火牆(iptables也許)在打擾 –

+0

你讀過這篇文章:http://stackoverflow.com/問題/ 18216712 /無法驗證進入mongo-auth-fails? – user3707125

+0

@ user3707125這個問題似乎涉及作爲現有連接的管理員進行身份驗證與創建新連接。在我的情況下,我通過兩種不同的方式創建一個新的連接(shell與API),得到了相互衝突的響應。 – Sean

回答

0

這是一個版本不匹配,顯然。我試着卸載Ubuntu提供的3.0.3,並使用我從mongodb.org下載的2.6.10,並且我的庫終於能夠連接。

這是我在日誌中發現了一條內存中的行,如「在用戶文檔中找不到憑據」。

男人,我知道在穿越主要版本號時可能會出現一些破損,但是阻止老客戶甚至無法連接就顯得非常極端。

0

在我的情況下,我不得不將我的mongo驅動程序從v2.12.5升級到v2.13.0以使其工作。