首页 > 解决方案 > Mongo 远程身份验证从一台服务器工作,但不在另一台服务器上工作

问题描述

我在办公网络上运行了一个节点脚本,它连接到同一网络中另一台运行 mongo 的机器。到目前为止,一切都很好。

现在我必须将此脚本移动到另一台机器上,但是当我尝试运行它时,我收到以下错误:

MongoError: Authentication failed.
    at MessageStream.messageHandler (/var/www/portal_uploader/node_modules/mongodb/lib/cmap/connection.js:299:20)
    at MessageStream.emit (events.js:314:20)
    at processIncomingData (/var/www/portal_uploader/node_modules/mongodb/lib/cmap/message_stream.js:144:12)
    at MessageStream._write (/var/www/portal_uploader/node_modules/mongodb/lib/cmap/message_stream.js:42:5)
    at doWrite (_stream_writable.js:403:12)
    at writeOrBuffer (_stream_writable.js:387:5)
    at MessageStream.Writable.write (_stream_writable.js:318:11)
    at Socket.ondata (_stream_readable.js:718:22)
    at Socket.emit (events.js:314:20)
    at addChunk (_stream_readable.js:297:12)
    at readableAddChunk (_stream_readable.js:272:9)
    at Socket.Readable.push (_stream_readable.js:213:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
  ok: 0,
  code: 18,
  codeName: 'AuthenticationFailed'
}

我的依赖是:

"dependencies": {
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "mongoose": "^5.11.17",
    "morgan": "^1.10.0",
    "multer": "^1.4.2",
    "nedb": "^1.8.0",
    "nodemon": "^2.0.7"
  }

我的连接代码是:

try {
        await mongoose.connect(process.env.DB_CONNECTION, {
            useNewUrlParser: true,
            useUnifiedTopology: true,
            auth: {authSource: "admin"}
        });
        console.log("connected to mongodb");
    } catch (err) {
        console.error(err);
    }

两台机器都使用节点 v12.22.6,这是机器中运行的版本,连接正常。

唯一的区别是原来的机器运行的是 debian,而新的机器运行的是ro​​cky linux 8。

有任何想法吗?

标签: node.jsmongoose

解决方案


推荐阅读