Dokku、RoR 和 Mongo DB:未授权未授权在 db 上执行命令

Dokku, RoR and Mongo DB: Unauthorized not authorized on db to execute command

几天来我一直在为这个问题苦苦挣扎,我可以使用 mongo shell.

进行身份验证

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

Ruby rails 日志:

2016-07-05T04:29:34.415943099Z app[web.1]: MONGODB | xx.xx.xx.xx:4121 | [db].count | STARTED | {"count"=>"listings", "query"=>{}}

2016-07-05T04:29:34.418337913Z app[web.1]: MONGODB | xx.xx.xx.xx:4121 | [db].count | FAILED | not authorized on [db] to execute command { count: "listings", query: {} } (13) | 0.0021065790000000004s

背景 托管在Digital Ocean,一键部署Dokku

独库版本:0.6.4 MongoDB:3.2.6 Ruby:2.2.4 Rails4.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

我不知道这是否能解决您的问题,但一般的建议是,不要一键部署 dokku。启动一个 droplet 并手动安装 dokku,它也不需要太多的努力。

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

dokku一键图片一直正常,没有问题

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

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

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

或者您可以在同一命令中创建和 link

mongodb:create <app> <database>     

好的。我找到了解决这个问题的方法,我想我会关闭这个循环并节省一些 hours/days 试图解决这个问题的人。

基本上,来自数字海洋的一键式确实有效!

但是您需要在 mongoid.yml 中添加 URI 并删除数据库、用户和密码。

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

dokku mongo:info <<db name>>

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

production:
  clients:
    default:
      uri: <<URI>>
      options:
        read:
          mode: :primary
        max_pool_size: 1