MongoError:auth失败的mongoose连接sting

Sun*_*kat 9 connection-string mongoose mongodb

我可以通过终端连接到DB,但是使用mongoose和gulp来获取此错误.mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:246 MongoError:auth failed

我的连接字符串是:

mongodb://usr:psw@localhost:27017/dbname
Run Code Online (Sandbox Code Playgroud)

知道它可以是什么吗?

小智 30

我在https://bitnami.com/stack/mean上安装了MEAN for Windows 7安装时我输入的密码是123456

语法使用mongoose连接到mongodb

mongoose.connect("mongodb://[usr]:[pwd]@localhost:[port]/[db]",{auth:{authdb:"admin"}});
Run Code Online (Sandbox Code Playgroud)

如果没有

{auth:{authdb:"admin"}}
Run Code Online (Sandbox Code Playgroud)

您将收到错误消息"MongoError:auth failed"

示例: mongo-test/app.js

var mongoose = require('mongoose');
mongoose.connect('mongodb://root:123456@localhost/test',{auth:{authdb:"admin"}});
mongoose.set('debug', true); // turn on debug
Run Code Online (Sandbox Code Playgroud)

  • 我添加了 `{auth:{authdb:"admin"}}` 但仍然得到 `"MongoError: auth failed"` (6认同)

ali*_*imi 12

只需添加?authSource=yourDB&w=1到数据库URL的末尾

 mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
Run Code Online (Sandbox Code Playgroud)

这项工作对我来说。&w=1很重要

  • mongoose.connect('mongodb://admin:password@localhost/some_db?authSource=admin&w=1',{}) (7认同)
  • w=1的目的是什么? (2认同)
  • @RyanGriggs w 选项请求确认写入操作已传播到指定数量的 mongod 实例或具有指定标签的 mongod 实例。 (2认同)

akh*_*ron 12

有很多方法可以让它发挥作用。这对我有用 [猫鼬 v5.9.15]:

mongoose.connect('mongodb://localhost:27017/', {
    auth: {
        user:'root',
        password:'example'
    },
    authSource:"admin",
    useUnifiedTopology: true,
    useNewUrlParser: true
}
Run Code Online (Sandbox Code Playgroud)

  • 从 mongo 节点驱动程序切换到 mongoose 时遇到此问题。使用相同的连接字符串,但我不断收到身份验证错误。我添加了 authSource='admin' 问题就解决了。 (2认同)
  • 就我而言, ("mongoose": "^6.0.2") "user" 需要更改为 "username" (2认同)

ann*_*iex 8

mongoose.connect("mongodb://[host]/[db]", { auth:{

    authdb: "admin",
    user: [username],
    password: [pw]

}}).then(function(db){

    // do whatever you want

    mongoose.connection.close() // close db

})
Run Code Online (Sandbox Code Playgroud)

  • 这应该是文档中的默认方式。所有其他方式都会导致错误和混乱。恭喜! (2认同)

Leo*_*eon 6

你可能想做这样的事......

var opt = {
    user: config.username,
    pass: config.password,
    auth: {
        authdb: 'admin'
    }
};
var connection = mongoose.createConnection(config.database.host, 'mydatabase', config.database.port, opt);
Run Code Online (Sandbox Code Playgroud)

'authdb'选项是您在其下创建用户的数据库.


Kam*_*tos 5

您是否为 dbname 设置了用户?默认情况下,除非您明确设置,否则不需要用户连接到数据库。如果没有,您应该尝试连接mongodb://localhost:27017/dbname并查看是否仍然出现错误。