Intereting Posts
нам нужно перезапустить apache + APC после развертывания новой версии приложения? Как определить запрашиваемую страницу в PHP Редактирование загруженных пользователем файлов? Массив PHP – $ _FILES пуст Помощь синтаксического анализа XML с помощью DOMDocument Проблемы с округлением целочисленного числа в PHP Phalcon PhP – как изменить вид динамически Как получить значение выбранной базы данных в качестве переменной сеанса в php? Обслуживание статического содержимого из домена Cookieless – использование субдомена и .htaccess Где мы используем оператор объекта «->» в PHP? Как захватить отдельные целые числа из длинной строки Как остановить галерею javascript php на последнем или первом изображении? Symfony2: токен CSRF недопустим. Попробуйте повторно отправить форму preg_match_all соответствует нескольким строкам и получает значения, записанные в двойных кавычках Сценарий PhantomJS, возвращающий пустую веб-страницу

Не удается выполнить проверку подлинности на mongodb с помощью PHP

Что я наделал:

Включенная аутентификация в /etc/mongod.conf :

 auth = true 

Создал первого пользователя из оболочки, как указано в документе :

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

Используя пользователя admin , я создал пользователя root для доступа к mongodb:

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

До этого момента все работает нормально, так как я могу аутентифицироваться из оболочки монго с:

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

и он отлично работает, так как я могу выполнять все операции в db.

Проблема :

когда я пытаюсь выполнить аутентификацию с PHP с помощью одного и того же пользователя root :

 $client = new MongoClient("mongodb://root:root@localhost:27017/admin"); 

Это дает ошибку:

Не удалось подключиться к: localhost: 27017: Ошибка аутентификации в базе данных «admin» с именем пользователя «root»: auth failed

Почему PHP не может аутентифицироваться на mongodb, если аутентификация с использованием тех же учетных данных отлично работает с оболочкой mongo?

Другие примечания:

  • Если я отключу аутентификацию, PHP прекрасно соединяется, и классы mongo работают нормально
  • Я пытался создать разных пользователей, но ответ одинаковый
  • Я использую Mongo 3.0.1, PHP 5.5.9 и Ubuntu 14.04.2 LTS 64bit

Проблема решена: это было вызвано проблемой / ошибкой в ​​PHP mongo версии 1.4

Я обновил драйвер до версии 1.6 с помощью:

 pecl upgrade mongo 

и теперь аутентификация работает.

У меня была та же проблема, в моем случае я установил mongo, используя apt-get

 apt-get install php5-mongo 

И похоже, что хранилища Ubuntu по-прежнему остаются версией 1.4 и еще не обновили пакет. Если вы хотите установить mongo на Ubuntu, вы должны использовать опцию pecl

 pecl install mongo 

Никогда не используйте apt-get для установки mongo для php.

в соответствии с инструкциями по установке mongo в версиях Windows mongo.dll необходимо скопировать в системный путь, например c: \ windows. Я тестировал это и да, он работает.