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

Mongoose 4.13.9仍出现Db.prototype.authenticate弃用警告求助

解决Mongoose 4.x下MongoDB认证警告问题

我来帮你搞定这个烦人的认证警告!虽然Mongoose 4.11.1之后官方说修复了这个问题,但如果连接配置没到位,还是会触发这个警告。咱们一步步来解决:

问题根源

这个警告是因为MongoDB 3.6及以后版本只允许通过admin数据库中的用户进行认证,而且不再支持在单个socket上使用多个凭据。你的代码里用的mongoose.connect如果没正确指定认证源(authSource),或者没启用新的MongoClient连接方式,就会触发旧的弃用认证逻辑,导致警告出现。

解决方案

你只需要调整连接配置,明确指定认证源为admin,同时启用Mongoose的useMongoClient选项(4.x版本必须加这个),下面是两种可行的修改方式:

方式1:在连接字符串中指定authSource

直接在数据库连接URL末尾加上?authSource=admin,同时带上正确的用户名和密码:

let mongoose = require('mongoose');
mongoose.Promise = global.Promise; // 推荐设置全局Promise,避免Mongoose的Promise警告
let client = null;

module.exports = {
  connect: function () {
    // 替换成你的实际连接信息:用户名、密码、主机、端口、数据库名
    const dbUri = "mongodb://yourUsername:yourPassword@yourHost:27017/yourDbName?authSource=admin";
    const options = {
      useMongoClient: true // 启用MongoClient连接方式,4.x版本必须
    };

    mongoose.connect(dbUri, options, function (err) {
      if (err) {
        console.error('MongoDB连接失败:', err);
        return;
      }
      console.log('MongoDB连接成功');
      client = mongoose.connection;
    });
  }
};

方式2:在连接选项中配置authSource

如果不想修改连接字符串,可以在options里单独指定认证源:

let mongoose = require('mongoose');
mongoose.Promise = global.Promise;
let client = null;

module.exports = {
  connect: function () {
    const dbUri = "mongodb://yourUsername:yourPassword@yourHost:27017/yourDbName";
    const options = {
      useMongoClient: true,
      auth: {
        authSource: 'admin' // 明确指定认证源为admin数据库
      }
    };

    mongoose.connect(dbUri, options, function (err) {
      if (err) {
        console.error('MongoDB连接失败:', err);
        return;
      }
      console.log('MongoDB连接成功');
      client = mongoose.connection;
    });
  }
};

额外注意事项

  • 确保你的MongoDB用户是在admin数据库下创建的,不然即使指定了authSource也会认证失败。
  • 一定要加上useMongoClient: true,Mongoose 4.x默认不会用新的MongoClient连接逻辑,这也是很多人升级后还遇到警告的核心原因。
  • 建议设置mongoose.Promise = global.Promise,避免Mongoose自带的Promise库被弃用的额外警告。

这样修改后,应该就能彻底消除那个认证警告啦!

内容的提问来源于stack exchange,提问作者Nalu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:07:47