无法加载数据库列表
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 无法将数据库加载到片段内的列表视图中
UITableView 无法从 CustomCell 重新加载数据