mongodb - Mongodb 和 Symfony 5 - 命令需要身份验证
问题描述
我最近使用 Symfony 5 和 Doctrine MongoDB Bundle 4.3 (Doctrine ODM) 建立了一个项目,并且由于似乎是身份验证错误而无法通过 ODM 插入文档。当我尝试这样做时,我收到错误Command Insert Requires Authentication
。
我为项目将使用的数据库创建了一个用户,并为该用户分配了 dbAdmin 角色。根据 Symfony 文档以及 Doctrine ODM 项目文档,传递凭据的正确方法是在services.yaml配置文件的mongodb_server
参数中。例如:
# config/services.yaml
parameters:
mongodb_server: "mongodb://username:password@localhost:27017/?authSource=auth-db"
我已经验证我拥有正确的凭据,包括 auth-db,并且可以通过 Mongodb shell 使用这些凭据成功登录。我相当有信心在尝试连接到 Mongo 服务器时根本没有传递用户名和密码,并且我可能错过了一些基本的配置设置,但看不到基于 Symfony 的位置文档。
解决方案
这里确实漏掉了一个配置设置。在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文档中找到。