2013-03-07 16 views
19

Używam mongo 2.2.2 na osx.Uwierzytelnianie linii poleceń mongo kończy się niepowodzeniem.

Kiedy należy wykonać następujące czynności uwierzytelnianie będzie dobrze:

$ mongo 
>> use admin 
>> db.auth("uname", "password") 

dziennika:

Thu Mar 7 13:51:08 [initandlisten] connection accepted from 127.0.0.1:63474 #10 (4 connections now open) 
Thu Mar 7 13:51:08 [conn10] authenticate db: admin { authenticate: 1, nonce: "123", user: "uname", key: "456" } 

Jednak przy próbie uwierzytelnienia bezpośrednio z linii poleceń:

$ mongo admin -u uname -p password 

otrzymuję następujący błąd:

Thu Mar 7 14:25:52 [initandlisten] connection accepted from 127.0.0.1:63939 #12 (5 connections now open) 
Thu Mar 7 14:25:52 [conn12] authenticate db: admin { authenticate: 1, nonce: "789", user: "uname", key: "147" } 
Thu Mar 7 14:25:52 [conn12] auth: key mismatch uname, ns:admin 
Thu Mar 7 14:25:52 [conn12] end connection 127.0.0.1:63939 (4 connections now open) 

Czy ktoś wie, co to powoduje?

+0

czy twoje hasło ma jakieś specjalne znaki, takie jak znak dolara? – ronasta

+0

Tak, zawiera pewne promocje. Jednak zawijanie go w cudzysłów takich jak: 'mongo admin -u uname -p" password "' nie działa. – RickyA

+0

Czy próbowałeś pojedynczych cudzysłowów: "hasło"? jeśli to też nie pomoże, czy możesz zmienić hasło na takie, które nie zawiera znaków specjalnych - czy to działa? – ronasta

Odpowiedz

41

hasło zawierające znaki specjalne, zwłaszcza znak dolara, należy umieścić w pojedynczych cudzysłowach, aby chronić je od powłoki poleceń:

$ mongo admin -u uname -p 'password' 
+0

Jak wyjaśniono [tutaj] (http://www.howtogeek.com/howto/29980/whats-the-difference-between-single-and-double-quotes-in-the-bash-shell/) – RickyA

+19

Aby zapobiec narażeniu hasło do historii basha, użyj 'mongo admin -u uname -p', które poprosi cię o hasło – Kimmo

+0

Upewnij się, że używasz pojedynczych cudzysłowów, a nie podwójnych cudzysłowów. – Fabian

16

trzeba UŻYTKOWNIKA --authenticationDatabase wskazać MongoDB gdzie znaleźć użytkownik, który utworzyłeś. Na przykład:

mongo admin -u uname -p 'password' --authenticationDatabase admin 
Powiązane problemy