在#me; meteor deploy myapp.com"之后无法访问mongoDB。

时间:2016-03-11 00:57:05

标签: mongodb meteor deployment

我使用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时,我会收到表单的网址:

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?

1 个答案:

答案 0 :(得分:0)

据我所知,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>的内容。您仍然需要切换到应用程序的数据库。所以从shell中调用use myapp_com

  5. 您现在应该能够在已部署的meteor 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