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"

我已经验证了我已经获得了正确的凭据,包括authdb,并且可以通过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文档中找到。

相关内容

最新更新