没有为 DEFAULT 定义 AuthProvider

No AuthProvider for DEFAULT defined

我的 MongoDB Compass 已更新到版本 1.28.1,现在我无法连接到我的 mongo 主机。错误是

No AuthProvider for DEFAULT defined.

我不使用身份验证,所以我的连接字符串没有用户名和密码。如何解决问题?

重新启动 MongoDB 指南针将解决此问题。

对于 passwordless/userless 连接,确保连接 url 不包含 authSource 对我有用。

替换

mongodb://some-remote-address:27017/database?readPreference=primary&authSource=database&directConnection=true&ssl=false

mongodb://some-remote-address:27017/database?readPreference=primary&directConnection=true&ssl=false

当您第一次创建新连接时,连接字符串如下所示

mongodb://some-remote-host/database

然后MongoDb Compass 将连接保存到收藏夹修改连接字符串为

mongodb://some-remote-host:27017/database?readPreference=primary&authSource=database&appname=MongoDB%20Compass&directConnection=true&ssl=false

要使 MongoDB Compass 再次连接,您需要从连接字符串中删除此参数:

&authSource=database

我通过以下步骤解决了它(对于 Node.js 应用程序).​​..

  • 在数据库导航面板下,为您的集群 [Cluster0]
  • 单击 'Connect'
  • 来自新的 window select 'Connect to Application' 选项
    选择你的驱动程序(对我来说Node.js)和它的版本
  • 之后您会看到连接字符串

mongodb+srv://<username>:<password>@cluster0.olwls.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

注意:用您的信用更改用户名和密码

这对我有用

    mongoose.connect(
    `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASS}@cluster0.adv0t.mongodb.net/${process.env.MONGO_DATABASE}?retryWrites=true&w=majority`,
    {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    }
  );

在父目录中创建一个“.env”文件(您需要在此之前安装dotenv)(如果您选择自定义位置,请添加以下内容)。

require('dotenv').config({ path: '/custom/path/to/.env' }) //uses custom location

否则,在服务器中添加这个。js/app.js 启动服务器的那个。

require('dotenv').config() //uses default location

在“.env”文件中,像这样定义用户、密码和数据库

MONGO_USER=uSerName
MONGO_PASS=p@sSW0rd
MONGO_DATABASE=myDatabase

将其更改为 mongodb://localhost:27017 一开始没有用,实际上我不得不重新启动 MongoDB Compass :/