2015-04-22 14 views
7

co zrobiłem:Nie można uwierzytelnić na MongoDB w PHP

Włączone uwierzytelnianie w /etc/mongod.conf:

auth = true 

stworzył pierwszego użytkownika z powłoki jak stwierdzono w doc:

db.createUser(
{ 
    user: "admin", 
    pwd: "admin", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
}) 

Korzystając z użytkownika admin, utworzyłem użytkownika root, aby uzyskać dostęp do ngodb:

db.createUser(
{ 
    user: "root", 
    pwd: "root", 
    roles: [ "root" ] 
}) 

Do tego momentu wszystko działa dobrze, jak mogę uwierzytelniać z powłoki Mongo z:

mongo --port 27017 -u root -p root admin 

i działa doskonale, jak mogę zrobić wszystkie operacje w db.

Problem:

podczas próby uwierzytelniania z PHP przy użyciu tego samego root użytkownika:

$client = new MongoClient("mongodb://root:[email protected]ost:27017/admin"); 

To daje błąd:

Failed to connect to: localhost:27017: Authentication failed on database 'admin' with username 'root': auth failed

Dlaczego nie mogę PHP uwierzytelnić na mongodb, jeśli uwierzytelnianie przy użyciu tych samych poświadczeń działa dobrze z powłoki Mongo?

Inne uwagi:

  • Gdybym wyłączyć uwierzytelnianie PHP łączy się doskonale, a zajęcia Mongo działać dobrze
  • Próbowałem stworzyć różnych użytkowników, ale odpowiedź jest taka sama
  • Używam Mongo 3.0.1, PHP 5.5.9 i Ubuntu 14.04.2 LTS 64bit
+1

podać numer portu z adresem URL połączenia, może połączyć. Na przykład: '$ client = new MongoClient (" mongodb: // root: root @ localhost: 27017/admin ");' –

+0

już wypróbowany, ale to nie działa – Moppo

+0

Czy próbowałeś w inny sposób: http: //php.net/manual/en/mongo.connecting.auth.php? Czy możesz połączyć się bez kredytów? Upewnij się, że połączenie z serwerem nie jest osiągalne z powodu problemów z połączeniem lub coś takiego. – Sammaye

Odpowiedz

20

Problem rozwiązany: najwyraźniej było to spowodowane przez problem/błąd w PH P Mongo wersja sterownika 1.4

ja uaktualniony sterownik do wersji 1.6 z:

pecl upgrade mongo 

i teraz pracach uwierzytelniania.

+0

Miło, dziękuję za zwrot – Sammaye

+0

Dziękuję za pomoc :) – Moppo

+0

To naprawiło mój problem! – Zorji

2

miałem ten sam problem, w moim przypadku mam zainstalowane Mongo za pomocą apt-get

apt-get install php5-mongo 

I wydaje się, że repozytoria Ubuntu ma jeszcze wersji 1.4 i nie aktualizowane jeszcze pakiet. Jeśli chcesz zainstalować Mongo na Ubuntu należy użyć opcji pecl

pecl install mongo 

Nigdy nie używaj apt-get instalacji Mongo dla php.

Powiązane problemy