【问题标题】:Cannot access mongoDB after "meteor deploy myapp.com"“meteor deploy myapp.com”后无法访问 mongoDB
【发布时间】:2016-03-18 00:03:08
【问题描述】:

我使用meteor deploy myapp.com 部署我的应用程序,并将我的DNS 定向到myapp.meteor.com

该应用程序现在可以在 myapp.com 上使用,我运行它没有问题。这是部署到“myapp.com”的正确版本,而不是旧的“myapp.meteor.com”版本。

但我无法访问此已部署版本的 mongodb。

当我运行meteor mongo myapp.com 时,我会在终端得到这个:

MongoDB shell version: 2.6.7
connecting to: sg-mother1-6242.servers.mongodirector.com:27017/myapp_com
2016-03-10T16:46:18.659-0800 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed

我在运行meteor mongo myapp.meteor.com 时也遇到同样的错误:

MongoDB shell version: 2.6.7
connecting to: someserver.servers.mongodirector.com:27017/myapp_meteor_com
2016-03-10T16:45:54.367-0800 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed

当我执行meteor mongo --url myapp.com 时,我确实得到了表单后面的 URL:

mongodb://<user>:<password>@<some-servername>.servers.mongodirector.com:27017/myapp_com

但我无法使用 Robomongo 连接到此 URL。我收到一个错误:

Cannot connect to MongoDB (<some-servername>.servers.mongodirector.com:27017),
error: Unable to connect to MongoDB

我做错了什么?如何为我在自定义域上部署的应用程序连接到 mongoDB?最好使用一些 GUI 工具,例如 Robomongo?

【问题讨论】:

    标签: mongodb meteor deployment


    【解决方案1】:

    我的理解是,Meteor 的本地安装使用 Mongodb 2.6,而新部署的 Meteor 站点使用 Mongodb 3.0

    当您调用meteor mongo myapp.meteor.com 时,您正在使用meteor 本地安装的mongo 版本(2.6 版),但您正在尝试访问已部署的mongodb(3.0 版)。这会导致您遇到身份验证错误。

    This link 描述了一种对我有用的解决方法。我不得不稍微调整一下,但这就是我所做的:

    1. Install or update 你本地的 Mongo 版本(不是通过 Meteor)。
    2. 运行命令meteor mongo --url myapp.meteor.com 获取 MONGO_URL。正如你已经提到的,你会得到类似

      mongodb://<user>:<password>@<some-servername>.servers.mongodirector.com:27017/myapp_com
      
    3. 通过运行使用更新的非流星版本的 mongo 连接到 MONGO_URL

      mongo mongodb://<user>:<password>@<some-servername>.servers.mongodirector.com:27017/myapp_com
      
    4. 您现在应该在 mongoshell 中,连接到您部署的 mongodb。您应该在您的 mongo shell 中看到类似 RS-mother1-0:PRIMARY&gt; 的内容。不过,您仍然需要切换到应用程序的数据库。所以从 shell 调用use myapp_com

    您现在应该能够在部署的流星 mongodb 上查看集合并运行 mongo 命令。

    我不确定为什么您无法使用流星在 MONGO_URL 中为您生成的用户名和密码连接到 Robomongo。我怀疑这是因为它可能会过期。如果您仍想使用 Robomongo 进行连接,我建议您在登录后在数据库上创建一个用户。然后,使用该用户登录 Robomongo。

    • 在 mongo shell 中创建用户:

      db.createUser({ "user" : "my_user", "pwd": "my_password", "roles" : ["readWrite"]})
      
    • 新的 MONGO_URL:

      mongodb://my_user:my_password@<some-servername>.servers.mongodirector.com:27017/myapp_com
      

    【讨论】:

      猜你喜欢
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 2020-09-18
      • 2020-03-14
      • 2023-01-21
      相关资源
      最近更新 更多