Mongodb и Symfony 5 — команда требует аутентификации

Недавно я настроил проект с использованием Symfony 5 с комплектом Doctrine MongoDB Bundle 4.3 (Doctrine ODM) и не смог вставить документы через ODM из-за ошибки аутентификации. Когда я пытаюсь это сделать, я получаю сообщение об ошибке Command Insert Requires Authentication.

Я создал пользователя для базы данных, которую будет использовать проект, и назначил этому пользователю роль dbAdmin. Согласно документам Symfony, а также документам проекта Doctrine ODM, правильный способ передачи учетных данных находится в параметре mongodb_server файла конфигурации services.yaml. Например:

# config/services.yaml
parameters:
    mongodb_server: "mongodb://username:password@localhost:27017/?authSource=auth-db"

Я убедился, что у меня есть правильные учетные данные, включая auth-db, и я могу успешно войти в систему с этими учетными данными через оболочку Mongodb. Я вполне уверен, что имя пользователя и пароль вообще не передаются при попытке подключения к серверу Mongo и что я, вероятно, пропустил некоторые важные параметры конфигурации, но не вижу, где это будет основано на Symfony. документация.

Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
1 066
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь действительно пропущен параметр конфигурации. В config/packages/doctrine_mongodb.yaml вы должны добавить параметры подключения имени пользователя, пароля и authSource. Пример:

# config/packages/doctrine_mongodb.yaml
doctrine_mongodb:
    # ...
    connections:
        default:
            server: "mongodb://localhost:27017"
            options:
                username: someuser
                password: somepass
                authSource: db_you_have_access_to

К сожалению, это сложно найти в документации Symfony, но это можно найти в документации Doctrine MongoDB Bundle.

Другие вопросы по теме