我有一个运行 Linux CentOS 的远程虚拟专用服务器 (VPS),我的服务提供商已在其上安装了 MongoDB。我长期以来一直在那里托管网站,但我对 MongoDB 还很陌生。我可以通过本地终端访问该 VPS。
我使用这个简单的命令通过 SSH 连接到服务器,不需要密码,因为我在服务器的
.ssh
目录中有一个公共 RSA 密钥:
ssh [email protected]
如果我指定端口,系统会提示我输入 SSH 密码:
ssh [email protected] -p22
无论哪种方式,我都已连接并能够使用该 VPS 上的 Mongo 数据库,从此命令开始,该命令会提示输入密码:
mongosh --username mongousername --password
我可以通过命令行创建用户和基础知识。这不是问题。
我需要帮助的是,我希望能够通过 MongoDB Compass 中的 GUI 使用此数据库,但我不知道如何配置 Compass 以便建立正确的连接。它永远不会连接,并且我不断收到“套接字关闭”错误。我尝试了几种方法,但无法弄清楚。我尝试使用用户名和密码(包括我的 SSH 连接和 MongoDB 用户)来完成此操作,并在我的 VPS 上上传与公共密钥相匹配的私钥。我尝试过同时使用密码和密钥。我尝试过打开和关闭 TLS。我找不到关于我需要做什么的明确文档。
我想我需要在 Compass 中提供正确的 URI 和/或高级连接选项。我从 URI 开始,尝试包含端口,并尝试了一堆不同的连接选项,正如我上面提到的。
mongodb://111.111.111.11
我想我需要为多个用户保存多个连接预设,因为我的管理员用户只能更改其他用户(如果我理解正确的话),而其他用户是实际操作各种数据库的用户。这是正确的吗?
感谢所有帮助,以及任何可以更好地帮助我前进的指示或提示。谢谢。
总结/“解释”评论:
对于应用程序如何通过 SSH 隧道连接到服务器的天真想法,我想到 “是什么让我通过隧道?” 当我到达那里之后,“什么将我的应用程序连接到服务器?” .
您已经手动完成了这些步骤。
ssh [email protected]
让您通过 SSH 隧道(并为您提供了命令行 shell)。因此,应用程序(MongoDB Compass)也需要知道如何做到这一点。将 MongoDB Compass 的 SSH Hostname
设置为 111.111.111.11
(以及您想要/需要的任何其他 SSH 参数)可以让您通过隧道。
mongosh --username mongousername --password
将应用程序 (mongosh
) 连接到服务器(从命令行 shell)。 MongoDB Compass(穿过隧道后)需要做同样的事情。这对应于 URI
的(基本)mongodb://127.0.0.1:27017
。