Dokku,RoR和Mongo DB:未授权未授权db执行命令

时间:2016-07-05 04:44:56

标签: ruby-on-rails ruby mongodb dokku

我几天来一直在努力解决这个问题,我可以使用mongo shell进行身份验证。

但是当我从浏览器访问我的应用程序时,我得到了上述错误。

Ruby on rails logs:

  

2016-07-05T04:29:34.415943099Z app [web.1]:MONGODB | XX.XX.XX.XX:4121   | [db] .count |开始了| {“count”=>“listing”,“query”=> {}}

     

2016-07-05T04:29:34.418337913Z app [web.1]:MONGODB | XX.XX.XX.XX:4121   | [db] .count |失败|未授权[db]执行命令{   count:“listing”,查询:{}}(13)| 0.0021065790000000004s

背景 通过Dokku的一键部署主持数字海洋。

Dokku版本:0.6.4 MongoDB:3.2.6 Ruby:2.2.4 Rails 4.2.6

我已将用户(使用DbOwner)添加到MongoDB,并将其添加到mongoid.yml。

以下是mongoid.yml

production:
  clients:
    default:
      database: sample
      hosts:
        - ip:4121
      user: "user"
      password: "password"
      options:
        read:
          mode: :primary
        max_pool_size: 5

3 个答案:

答案 0 :(得分:0)

我不知道这是否能解决您的问题,但一般的建议是,不要单击dokku部署。旋转一滴并手动安装dokku,它也不会花费太多精力。

单击部署会产生不需要的配置错误。它建议采用这种方法,如果你想做一些RnD并玩它。

答案 1 :(得分:0)

dokku一键式图像一直正常工作,没有问题

你安装了dokku的mongodb插件吗? https://github.com/jeffutter/dokku-mongodb-plugin

如果您已经安装了插件,则不上传yml文件,只需在服务器中运行link命令

mongodb:create <app>
mongodb:link <app> <database>

或者您可以在同一个命令中创建和链接

mongodb:create <app> <database>     

答案 2 :(得分:0)

确定。我找到了这个解决方案,我想我会关闭这个循环并节省几个小时/天试图解决这个问题。

基本上,从数字海洋一键点击 DOES 工作!

但是你需要在你的mongoid.yml中添加以下内容,添加URI并删除数据库,用户和密码。

要生成URI,请在ssh终端控制台中执行以下操作:

//WAP in Co convert a binary or octal to a decimal number depending on user choice.
#include <stdio.h>
#include <math.h>
int conversion(int number,int base);
int main(void){
    int number,base,decimal;
    char choice;
    printf("Enter the number:");
    scanf("%d",&number);
    printf("Enter 'b' for binary or 'o' for octal:");
    scanf("%c",&choice); //Problem occuring here 
    if(choice=='b')
        base=2;
    base=8;
    decimal=conversion(number,base);
    printf("Decimal number:%d",decimal);
    return 0;
}

int conversion(int number,int base){
    int reminder;
    int decimal=1;
    int i=0;
    while(number>=0){
        reminder=number%base;
        decimal=(decimal*reminder)*pow(base,i);
        number/=10;
        i++;
    }
    return decimal;
}

使用屏幕上显示的内容更新uri值。

dokku mongo:info <<db name>>