Node.js 使用 Mongoose 连接 MongoDB 数据库出现 “MongoError: Authentication failed.” 解决方案

在使用 Node.js 中的 Mongoose 连接 MongoDB 数据库时,有可能会遇到 “MongoError: Authentication failed.” 错误。这个错误通常表示数据库认证失败,很可能是由于连接字符串、用户名或密码等因素引起的。本文将为你介绍如何解决这个问题。

1. 确认数据库连接字符串

首先,我们需要确认我们正在使用的 MongoDB 连接字符串是否正确。连接字符串应该包含主机名、端口号以及数据库名称。例如:

----- --- - ---------------------------------------

如果你的 MongoDB 服务器不在本地,则需要替换 localhost 为正确的主机名或 IP 地址。

2. 确认用户名和密码

如果你的 MongoDB 服务器需要认证,那么你需要提供正确的用户名和密码信息。在 Mongoose 中,可以通过传递一个具有 userpass 属性的 JavaScript 对象来完成认证。例如:

----- --- - ---------------------------------------------------------

如果你的用户名或密码包含特殊字符,则需要进行 URL 编码。另外,请记得替换上面的主机名和数据库名称为正确的值。

3. 确认用户权限

除了确认用户名和密码之外,还需要确保该用户被授予了正确的权限。如果你的用户只具有读取权限,那么你将无法进行写入操作。

可以使用 MongoDB 的 show users 命令来查看用户及其权限信息。如果您不知道如何运行该命令,请参考 MongoDB 文档

4. 确认 MongoDB 服务运行状态

最后,还需要确认 MongoDB 服务正在运行。可以使用以下命令检查 MongoDB 是否正在运行:

- ---- --------- ------ -------

如果 MongoDB 未在运行,则需要启动它:

- ---- --------- ----- -------

5. 示例代码

最后,这是一个使用 Mongoose 连接并认证 MongoDB 数据库的示例代码:

----- -------- - --------------------

----- --- - ---------------------------------------------------------

--------------------- - ---------------- ----- ------------------- ---- --
  -------- -- ---------------------- -- ----------
  ------------ -- -------------------- ---------- -- --------- ------

在上面的代码中,我们使用 mongoose.connect 方法连接到数据库,并传递了一个具有 useNewUrlParseruseUnifiedTopology 选项的 JavaScript 对象。这些选项用于避免使用官方 MongoDB 驱动程序时出现警告或错误。

如果连接成功,将输出 “Connected to MongoDB”,否则将输出相应的错误信息。

结论

通过本文,我们已经了解了在使用 Mongoose 连接 MongoDB 数据库时可能会遇到的 “MongoError: Authentication failed.” 错误,并提供了一些解决方案。如果你仍然无法连接到数据库,请检查你的连接字符串、用户名、密码、权限以及 MongoDB 服务是否运行。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6729b20f2e7021665e255794