2014-05-18 64 views
22

我使用認證設置了副本集。我用this教程。我設置了密鑰文件,管理用戶和其他用戶。它一切正常 - 匿名訪問被禁用,我可以登錄MongoDB 2.6.1命令行認證失敗

$ mongo 
MongoDB shell version: 2.6.1 
connecting to: test 
Error while trying to show server startup warnings: not authorized on admin to execute  command { getLog: "startupWarnings" } 
rs0:PRIMARY> use admin 
switched to db admin 
rs0:PRIMARY> db.auth("USERNAME","PASSWORD") 
1 
rs0:PRIMARY> 

使用我創建的用戶的憑據。

但我不能從命令行

$ mongo -u 'USERNAME' -p 'PASSWORD' 
MongoDB shell version: 2.6.1 
connecting to: test 
2014-05-18T14:23:47.324+0200 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210 
exception: login failed 

使用相同的憑據登錄。我沒有在文檔中或在這裏找到任何有用的幫助。

回答

54

在您的示例中執行的內置身份驗證是針對數據庫的。上面發佈的命令行沒有指定數據庫,因此是對默認數據庫進行身份驗證的,默認數據庫是測試。試試這個,而不是通過對管理數據庫命令行來驗證:

mongo admin -u 'USERNAME' -p 'PASSWORD' 

如果服務器不在本地主機上,那麼你可以使用這個:

mongo your_host_name:your_port/admin -u 'USERNAME' -p 'PASSWORD' 
+1

是啊,我也不會明白這一點......感謝名單,它工作:-) –

+2

這個問題,因爲它不是在蒙戈文檔正確指定的回答值得許多upvotes。 –

+31

**在Mongo文檔中沒有指定任何**。 – Obscaenvs

0

也許現在不同了,因爲自從更新的這個問題最初得到了解答,但是當用雙引號包裝用戶名/密碼時,認證纔會成功。 例如,

mongo admin -u "myName" -p "myPassword"