错误消息:MongoError:错误的身份验证通过URI字符串失败

Dja*_*ike 6 mongoose mongodb node.js

MongoDB和Node.js的新手。我试图通过mongo给我的连接字符串连接到我的mongoDB服务器:

“ mongodb + srv:// david:password@cluster0-re3gq.mongodb.net/test?retryWrites = true”

在我的代码中,我像这样通过猫鼬调用连接(显然输入了密码):

const mongoose = require('mongoose');
const db = 'mongodb+srv://david:<password>@cluster0-re3gq.mongodb.net/test?retryWrites=true'
mongoose
    .connect(db, { 
        useNewUrlParser: true,
        useCreateIndex: true
      })
    .then(() => console.log('MongoDB connected...'))
    .catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,出现以下错误

“ MongoError:错误的身份验证失败。”

关于这意味着什么的任何想法?谢谢!

小智 45

这是因为输入的密码错误。因为您输入的是登录密码而不是第一个密码。

解决方法===> 第一步,点击mongodb图集页面左侧导航中的Database Access。

步骤 2. 选择您的用户名,然后单击从右侧进行编辑。

第三步,点击修改密码。

步骤 4. 单击更新用户。

在更改密码期间,请仅按字母顺序保存密码,因为特殊字符需要编码。 请参阅图像以更好地理解

这就是您现在可以连接的全部内容。

快乐编码。


vhu*_*rry 17

我认为您对mongodb帐户密码和用户密码感到困惑。您应该使用用户密码,而不是帐户密码。那就是我案的原因。

  • 如果我忘记了用户密码,如何找到它? (2认同)

Cro*_*asr 16

我遇到了同样的问题,就我而言,答案很简单,就像删除尖括号“ <”和“>”一样<password>。我一直在尝试:my_login_id:<my_password>应该何时进行my_login_id:my_password


小智 10

效果很好!!

不要在 URI 中使用凭据,而是像这样使用

mongoose.connect(mongodb+srv://clusterAnything.mongodb.net/test?retryWrites=true&w=majority, { user: process.env.MONGO_USER, pass: process.env.MONGO_PASSWORD, useNewUrlParser: true, useUnifiedTopology: true })
Run Code Online (Sandbox Code Playgroud)

  • 为我工作。另外我必须添加 {... authSource: admin } (2认同)

Rtm*_*tmY 6

要遵循的清单:

1) 确保您使用正确的密码(DB 用户密码而不是 Mongo 帐户)。

2) 输入密码时,请确保所有特殊字符都经过 URL 编码(例如:p@sswordshould p%40ssword)。

3) 如果您忘记了数据库用户的密码 - 转到数据库访问(如果您使用的是 Mongo Atlas) -> 选择您的数据库用户 -> 编辑 -> 创建新密码 -> 不要忘记更新单击“更新用户”

(!)安全警告:不要在代码中以纯文本形式写入密码 - 请遵循此处给出的建议。


ard*_*ont 5

您是否在 的位置写下您的密码<password>?如果您不是,一个好的做法是在操作系统上创建一个环境变量并使用 process.env.[您的变量] 调用它。前任:

const password = process.env.YOURPASSWORDVARIABLE
const db = 'mongodb+srv://david:'+password+'@cluster0-re3gq.mongodb.net/test?retryWrites=true'
Run Code Online (Sandbox Code Playgroud)

更好的是,您还可以将整个 url 连接字符串放入环境变量中: