Mongodb 和 Symfony 5 - 命令需要身份验证

时间:2020-12-19 01:22:15

标签: mongodb symfony

我最近使用 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 的位置文档。

1 个答案:

答案 0 :(得分:0)

这里确实遗漏了一个配置设置。在 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 文档中找到。