【问题标题】:No AuthProvider for DEFAULT defined未定义 DEFAULT 的 AuthProvider
【发布时间】:2021-10-02 04:13:48
【问题描述】:

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

No AuthProvider for DEFAULT defined.

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

【问题讨论】:

  • 我对本地数据库使用 Compass 1.28.1 并关闭了身份验证。我只是使用连接字符串mongodb://localhost:27017。似乎当我开始输入连接字符串时,我看到一条消息“没有在权限部分提供用户名”,但在完成连接字符串后它就消失了。也许你和我在不同的屏幕上。如果您尝试使用已保存的连接字符串,或许可以尝试将其删除并重新添加以解决问题。
  • 感谢您的回复。我从收藏列表和最近列表中删除了所有连接并创建了新连接。结果是同样的错误。我的连接字符串看起来像 mongodb://some-remote-address:27017/database?readPreference=primary&authSource=database&directConnection=true&ssl=false
  • 您的示例连接字符串是指主机“some-remote-address”。可能是这个主机在 27017 端口上无法访问,或者安装的 mongodb 需要认证?我只是猜测......
  • 主机在27017端口可达,mongodb不需要认证。此连接适用于 MongoDB 的 IntelliJ DataGrip 和 NoSQLBooster,但不适用于 MongoDB Compass。
  • 我只是想摆脱这个错误半小时。重新启动 MongoDB Compass 有效 ??????♂️

标签: mongodb mongodb-compass


【解决方案1】:

重启 MongoDB Compass 即可解决此问题。

【讨论】:

  • 如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。
  • 我尝试重新启动 MongoDB Compass,但没有任何效果。我试图重新安装 MongoDB Compass - 问题没有解决。它看起来像是 MongoDB Compass 应用程序中的某种错误。在以前版本的应用中我没有这个问题。
  • @VasliSlavik 尝试连接 Robo3T 并检查这是否真的是关于 MongoDB Compass 的问题,或者实际上是在服务器内部。我希望您已经编辑了 /etc/mongod.conf 并在 ip 中添加了 0.0.0.0 而不是 127.0.0.1。让我详细了解错误,我会尽力提供帮助。谢谢。
  • 我下载并安装了 MongoDB Compass 应用程序的 1.27.0-beta.10 (Beta) 版本。它工作正常。看来问题只出现在 1.28 中。此外,我找到了重现问题的方法: 1. 创建新连接并使用此连接字符串: mongodb://some-remote-host/database 连接字符串不应有任何端口或任何附加设置。这种连接工作正常。
  • 2.退出 MongoDB Compass 并再次启动后,MongoDB Compass 在最近的列表中显示最后使用的连接字符串。但是应用程序对其进行了一些修改。现在连接字符串看起来像 mongodb://some-remote-host:27017/database?readPreference=primary&authSource=database&appname=MongoDB%20Compass&directConnection=true&ssl=false 这个由应用修改的新连接字符串不起作用。
【解决方案2】:

对于无密码/无用户连接,确保连接 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

【讨论】:

    【解决方案3】:

    当你第一次创建新连接时,连接字符串看起来像

    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
    

    【讨论】:

      【解决方案4】:

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

      • 在数据库导航面板下,单击集群 [Cluster0] 的“连接”
      • 从新窗口中选择“连接到应用程序”选项
        选择你的驱动程序(对我来说是 Node.js)和它的版本
      • 之后您会看到连接字符串

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

      注意:使用您的凭据更改用户名和密码

      【讨论】:

        【解决方案5】:

        这对我有用

            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
        

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

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

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

        MONGO_USER=uSerName
        MONGO_PASS=p@sSW0rd
        MONGO_DATABASE=myDatabase
        

        【讨论】:

          【解决方案6】:

          将其更改为 mongodb://localhost:27017 最初不起作用,实际上我不得不重新启动 MongoDB Compass :/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-09
            • 1970-01-01
            • 2016-10-02
            • 1970-01-01
            • 2017-08-14
            • 2021-01-26
            • 2021-12-02
            • 2022-01-16
            相关资源
            最近更新 更多