You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal站点连接MongoDB遇AuthenticationException认证失败错误求助

解决Drupal连接MongoDB时的AuthenticationException认证失败问题

我来帮你一步步排查这个认证失败的问题,这些都是我在实际项目里踩过坑后总结的有效方案:

  • 先确认核心认证凭证是否正确
    先去检查Drupal的settings.php里的MongoDB连接配置,确保用户名、密码、认证数据库(默认是admin,除非你给用户指定了其他归属库)完全匹配MongoDB端的设置——尤其要注意大小写敏感,比如数据库名MyDB和mydb是两个不同的库,用户名也是同理。
    举个正确的配置示例:

    $settings['mongodb']['connections']['default'] = 'mongodb://your_username:your_password@mongo_host:27017/your_auth_db';
    

    这里的your_auth_db必须是你在MongoDB中创建用户时指定的数据库(比如use admin; db.createUser(...)的话,这里就填admin)。

  • 验证MongoDB用户的权限与认证机制
    登录MongoDB的shell,执行以下命令检查用户信息:

    use your_auth_db;
    db.getUser('your_username');
    

    查看输出里的roles字段,确认该用户拥有你要连接的目标数据库的读写权限(比如readWrite角色)。另外,注意认证机制是否匹配——如果你的MongoDB用的是SCRAM-SHA-256,而Drupal连接时默认用了旧的SCRAM-SHA-1,也会导致认证失败,这时候需要在连接字符串里显式指定:

    $settings['mongodb']['connections']['default'] = 'mongodb://your_username:your_password@mongo_host:27017/your_auth_db?authMechanism=SCRAM-SHA-256';
    
  • 排查网络与MongoDB服务端配置

    • 检查MongoDB的配置文件(mongod.conf),确认bindIp没有只限制本地访问(如果Drupal和MongoDB不在同一服务器的话),可以设置为0.0.0.0允许所有IP,或者指定Drupal服务器的IP。
    • 确认MongoDB服务端已经开启了认证功能(security.authorization设置为enabled)——如果没开启认证,但你在Drupal里填了用户名密码,反而会触发认证失败;反之,如果开启了认证但没填凭证,也会报错。
  • 检查Drupal MongoDB模块的兼容性与配置

    • 确认你使用的Drupal MongoDB相关模块(比如mongodb、mongodb_storage)的版本和MongoDB服务器版本兼容,比如MongoDB 6.x需要较新的模块版本,旧模块可能不支持新的认证机制。
    • 再仔细核对settings.php里的配置键名,有没有拼写错误(比如把mongodb写成mongdb),这类低级错误很容易被忽略。
  • 用MongoDB Shell直接测试连接
    从Drupal所在的服务器上,执行以下命令测试连接:

    mongosh "mongodb://your_username:your_password@mongo_host:27017/your_auth_db"
    

    如果shell都连不上,那问题肯定出在MongoDB端或者网络,和Drupal无关;如果shell能正常连接,那就要重点排查Drupal的模块配置或者版本兼容性问题。

内容的提问来源于stack exchange,提问作者Anas P H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:03:22