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
podać numer portu z adresem URL połączenia, może połączyć. Na przykład: '$ client = new MongoClient (" mongodb: // root: root @ localhost: 27017/admin ");' –
już wypróbowany, ale to nie działa – Moppo
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