我在ubuntu服务器上托管了一个Mongo数据库。我创建了一个admin用户以便能够连接Nodejs来创建数据库,添加表格等。我可以连接 * mongoDB compass* 没有问题,但是从nodeJS mongo返回一个错误。
连接功能:
const mongoose = require("mongoose");
mongoose.set("strictQuery", true);
//connect to db
mongoose
.connect("mongodb://" + process.env.DB_USER_PASS + "@2.56.247.250:27017/?authMechanism=DEFAULT")
.then(() => console.log('Connecté a la base de donné'))
.catch((err) => console.log("Erreur de connexion :", err));
下面是错误:
Erreur de connexion : MongoServerError: Authentication failed.
at Connection.onMessage (C:\Users\arnau\Desktop\messIO\node_modules\mongodb\lib\cmap\connection.js:230:30)
at MessageStream.<anonymous> (C:\Users\arnau\Desktop\messIO\node_modules\mongodb\lib\cmap\connection.js:61:60)
at MessageStream.emit (node:events:513:28)
at processIncomingData (C:\Users\arnau\Desktop\messIO\node_modules\mongodb\lib\cmap\message_stream.js:125:16)
at MessageStream._write (C:\Users\arnau\Desktop\messIO\node_modules\mongodb\lib\cmap\message_stream.js:33:9)
at writeOrBuffer (node:internal/streams/writable:392:12)
at _write (node:internal/streams/writable:333:10)
at Writable.write (node:internal/streams/writable:337:10)
at Socket.ondata (node:internal/streams/readable:766:22)
at Socket.emit (node:events:513:28) {
ok: 0,
code: 18,
codeName: 'AuthenticationFailed',
connectionGeneration: 0,
[Symbol(errorLabels)]: Set(2) { 'HandshakeError', 'ResetPool' }
1条答案
按热度按时间ecbunoof1#
错误
AuthenticationFailed
表示连接字符串有问题,驱动程序无法连接到该字符串。请在此处查看所有详细信息:https://www.mongodb.com/docs/manual/reference/connection-string/潜在问题:
1.* * 特殊字符**:来自文档:
If the username or password includes the following characters: / ? # [ ] @ those characters must be converted using percent encoding.
1.* * username:password format检查环境变量的格式是否正确,username和pass之间是否有
:
,并且没有空格。1.* * 检查您的授权数据库:创建用户时,使用命令
use dbname
在默认值("admin"数据库是默认值)或特定数据库上创建。如果在特定数据库上创建,则可能需要在连接字符串上添加auth数据库名称。您可以尝试以上所有解决方案,使用
mongosh
命令建立连接,以验证连接字符串是否正常。