У меня работает mongod с auth=true
на моем сервере.
Если я вхожу в журнал для моего администратора (из базы данных администратора), нет проблем с получением данных.
<?php $connection = new Mongo("mongodb://admin:adminpass@127.0.0.1"); $db = $connection->selectDB( "mydb" ); $collection = $db->selectCollection( "user" ); var_dump($collection->findOne()); ?>
но если заменить первую строку на
$connection = new Mongo("mongodb://mydbadmin:dbadminpass@127.0.0.1:27017");
Он не может подключиться и получить сообщение об ошибке:
Fatal error: Uncaught exception 'MongoConnectionException' with message 'Couldn't authenticate with database admin: username [mydbadmin]' in .....
Таким образом, проблема заключается в new Mongo()
пытается подключить моего пользователя к базе данных администратора вместо базы данных «mydb». Как выбрать базу данных, которую я хочу подключить?
РЕДАКТИРОВАТЬ :
согласно http://php.net/manual/fr/mongo.construct.php
Я попробовал это
$login = array("username" => "mydbadmin", "password" => "dbadminpass", "db" => "mydb", "connect" => true ); $connection = new Mongo("mongodb://localhost", $login);
но
Couldn't authenticate with database mydb: username [mydbadmin]' in .....
Ну, если вы не укажете db в конструкторе, он использует базу данных admin
по умолчанию (как описано в Mongo::__construct
-reference). Попробуйте следующее:
$connection = new Mongo("mongodb://admin:adminpass@127.0.0.1/mydb");
обратите внимание на /mydb
после хост-части, которая позволяет PHP-api подключаться к требуемой базе данных.
проверьте версию драйвера ur php и версию mongod, обе версии должны быть совместимы .. Ex: для моего .. im, используя php 5.3 (wamp) и mongod 3.0 в mlab.com .. Моя версия dll – php_mongo-1.6.6-5.3- TS-VC9-x86
работаю хорошо для меня
обратитесь к этому сайту для получения сведений о файле mongo
см. ниже сайт https://docs.mongodb.com/ecosystem/drivers/php/
обратитесь к этому сайту для загрузки драйверов mongod https://pecl.php.net/package/mongo/1.6.6/windows
спасибо … sureshapn.m@gmail.com