无法加载数据库列表

Posted

技术标签:

【中文标题】无法加载数据库列表【英文标题】:Failed to load list of databases 【发布时间】:2017-02-24 03:34:40 【问题描述】:

我想使用 Robomongo 连接到远程数据库。我可以连接到数据库,但错误提示: 加载数据库列表失败

我该怎么办?

【问题讨论】:

有同样的问题。它以前一直在工作,但现在停止了。 “无法在 xx.xx.xx.xx:443 连接到 MongoDB。错误:无法执行“listdatabases”命令。” 我注意到当我使用某些版本的官方mongo docker 镜像时会发生这种情况。由于此错误是权限问题,因此在进行身份验证时,他们的图像构建方式似乎存在一些不一致。 通过 Robo 3T 在 docker 中连接到 Mongo 4.1.6 时出现此问题。使用 dockerized mongo 3.4.18 可以正常工作。 【参考方案1】:

我花了 7 天时间才弄明白。当我升级到 Robo 3T 1.3 版。它开始工作得很好。我以前的版本是 1.2

很高兴知道您是否遇到此问题。

【讨论】:

这确实应该得到更多的支持,因为这也为我解决了所有问题。没有身份验证,什么都没有,只需连接到暴露的端口就可以了。非常感谢。 在 2020 年拯救我的生命。谢谢!! :) 这就像一个魅力!谢谢!这个答案应该被接受和支持! 我的 robomongo 是 0.9 版本,因为我是从 Snap 商店安装的! 这个答案来自上帝本人。另外,Robo 3T 到底是什么鬼:/【参考方案2】:

根据我的经验,这与数据库用户/密码身份验证失败有关。所以可能你的 IP 连接到服务器是成功的,但是你没有连接到 db。我建议仔细检查您的数据库用户名/密码,然后再试一次。

最好显示“显示错误详细信息”中的内容。

【讨论】:

没有任何密码可用!我必须设置密码吗? 能否分享一下“错误详情”,以及您使用的是哪个远程数据库?例如对于 Mongo Atlas,您应该定义数据库用户/密码。 没有细节!只有这个错误!细节又说同样的错误 有错误详细信息,您缺少,您应该点击“显示错误详细信息” 有人解决了这个问题吗?因为在数字海洋的 vps 上设置 mongodb 后,我遇到了同样的问题。我可以远程连接,我也可以通过ssh隧道连接,但我无法正常连接。身份验证失败,错误的详细信息是:“尝试运行命令'buildInfo'时出现网络错误”。我什么都试过了..【参考方案3】:

转到连接设置 -> 身份验证 - 提供数据库名称、用户名、密码 - 现在测试连接 我遇到了同样的问题,然后我提供了解决我的问题的上述信息

参考:(Vaibhav 的帖子)Point 3.Populate DB 名称和用户名密码How to connect Robomongo to MongoDB

【讨论】:

【参考方案4】:

在将 MongoDB 版本从 3.6 更新到 4.2 后,我遇到了同样的问题,之前我使用的是 Robo 3T version 1.2。所以我刚刚将Robo 3T 版本从1.2 更新到1.3,它又开始工作了。

【讨论】:

【参考方案5】:

这是因为您连接的任何用户都没有列出数据库的权限。

https://docs.mongodb.com/manual/reference/built-in-roles/

请注意,用户/角色可以连接特定数据库/集合并与之交互,但为了让 Robomongo 列出数据库/集合,您需要让它使用具有 listDatabases 的用户连接到您的数据库特权。

检查您的用户是否具有读/写权限并列出所有数据库权限。

【讨论】:

你可以使用它来授予权限***.com/questions/22638258/create-superuser-in-mongo【参考方案6】:

我遇到了同样的错误(“未能加载数据库列表”)。由于某种原因,我所有的数据库和收藏都被删除了。显然,当服务器上没有可用的数据库/集合时,Robomongo 无法处理这种情况。

为了解决这个问题,我连接到 Mongo Shell,创建了一个数据库,并在那里创建了一个集合:

mongo (start mongo shell)
use local (create database named local)
db.createCollection("somename")

之后,我就可以连接到 Mongo 服务器了

更新:我又遇到了这个问题,这次是因为它是在虚拟机上安装了新的 Mongo,并且没有来自其他主机的连接允许,所以我不得不在 /etc/mongod.conf 中将 bindIP 从 127.0.0.1 修改为 0.0.0.0

net:
   bindIp: 0.0.0.0
   port: 27017

然后重启 mongo sudo service mongod restart

【讨论】:

【参考方案7】:

在使用 mongodb v4.2.0 版本时遇到了同样的问题,但身份验证设置没有帮助。从 Robo 3T(即 mongoRobo)连接时不断收到以下日志。

2019-09-30T16:41:52.286-0400 I  NETWORK  [listener] connection accepted from 127.0.0.1:53862 #1 (1 connection now open)
2019-09-30T16:41:52.286-0400 I  NETWORK  [conn1] received client metadata from 127.0.0.1:53862 conn1:  application:  name: "robo3t" , driver:  name: "MongoDB Internal Client", version: "3.4.3-10-g865d2fb" , os:  type: "Darwin", name: "Mac OS X", architecture: "x86_64", version: "17.7.0"  
2019-09-30T16:41:52.292-0400 E  -        [conn1] Assertion: Location34348: cannot translate opcode 2010 src/mongo/rpc/message.h 120
2019-09-30T16:41:52.292-0400 I  NETWORK  [conn1] DBException handling request, closing client connection: Location34348: cannot translate opcode 2010
2019-09-30T16:41:52.292-0400 I  NETWORK  [conn1] end connection 127.0.0.1:53862 (0 connections now open)

最终通过将 Robo 3T 升级到 v1.3(mac) 解决了这个问题

【讨论】:

您可以将您的解决方案写为答案,如果您已解决(并将其标记为已接受的解决方案),以便其他人可以看到解决此问题的方法。【参考方案8】:

我刚刚发现我必须升级到支持最新版本 MongoDB 的最新版本。它无需任何身份验证即可工作。

【讨论】:

这也是storagemode11回答这个问题的答案。【参考方案9】:

当我将 mongodb 从 3.2 升级到 5.0 并尝试在 Robo 3T 1.2 上连接时,我遇到了同样的问题。

然后我安装了 Mongo Compass,问题解决了。安装 Robo 3T 1.3 也将解决问题。

【讨论】:

【参考方案10】:

如果您使用mongod --auth --dbpath /data/db1 命令启动 MongoDB,请删除 --auth 并启动它。

mongod --dbpath /data/db1

现在 Robomongo 无需身份验证即可连接。但是没有身份验证就开始是不安全的。所以使用另一个终端并使用mongo 命令为您的数据库创建一个用户,如article 中所述。

use myDB
db.createUser(
  
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [  role: "dbAdminAnyDatabase", db: "admin"  ]
  
)

现在使用--auth 重新启动您的 MongoDB。在 Robomongo 的连接设置中配置上述身份验证详细信息后,与 Robomongo 连接。

mongod --auth --dbpath /data/db1

【讨论】:

【参考方案11】:

我遇到了同样的问题(使用 Robomongo),然后,我用他的密码创建了一个用户来连接数据库,现在它工作正常

【讨论】:

【参考方案12】:

就我而言,我更改了连接的配置:

你去:经理连接>>编辑>>身份验证>>重命名数据库为:管理员

当我加载我的连接时,所有数据库都出现了。

【讨论】:

【参考方案13】:

启动mongod 进程。启动mongo 进程。

mongo shell 上,您首先打开了输入rs.status(),然后是rs.initiate(),然后是rs.status()

【讨论】:

【参考方案14】:

我的版本是 1.4.3 Robo3T。

对我有用的是;

    转到 MongoDB Connections 并编辑相关连接 转到连接设置 在身份验证选项卡下检查“手动指定可见 数据库”并填写您需要访问的数据库名称。

它应该修复。

【讨论】:

【参考方案15】:

我遇到了类似的问题,但这是由于我自己的错误。我在 /etc/mongod.conf 文件中添加了复制配置(即 replSet 名称)并重新启动了 mongod.service 而不执行 rs.initiate()

在执行rs.initiate() 并重新启动mongod.service 后,我的问题得到了解决。

【讨论】:

以上是关于无法加载数据库列表的主要内容,如果未能解决你的问题,请参考以下文章

Android:NullPointerException 无法将数据库加载到片段内的列表视图中

外键 id 无法加载到 Django 模板的下拉列表中

Android 无法使用列表视图加载主屏幕小部件

UITableView 无法从 CustomCell 重新加载数据

Webpack - 错误:无法在加载器列表中定义“查询”和多个加载器

应用内购买无法加载产品列表