【问题标题】:rake db:migrate securely on staging and production environmentsrake db:在暂存和生产环境中安全迁移
【发布时间】:2012-11-20 10:16:42
【问题描述】:

我喜欢在开发环境中使用 rake 来管理我的迁移,在那里我允许我的 rails 应用程序对开发数据库具有完全权限。

但是,在暂存和生产环境中,我的应用程序只有写访问权限,没有更改表的能力。

我想继续在暂存和生产中使用rake db:migrate,但问题是rake db 使用与我的rails 应用相同的用户,它没有足够的权限。

有谁知道解决此问题的简单方法,而无需在我的 rails 应用程序中授予管理 db 权限。

例如,如果我可以在运行rake db 时指定-username-password,那就太好了。

【问题讨论】:

    标签: sql ruby-on-rails deployment rake production-environment


    【解决方案1】:

    您可以在 config/database.yml 中指定一些 migration 连接,并为具有适当权限的用户设置用户/密码并运行

    RAILS_ENV=migration rake db:migrate
    

    编辑看起来像这样的东西可能会起作用(尽管我从未通过远程连接测试过它,只在本地测试过)。将以下内容添加到您的 config/database.yml

    <%
    require 'highline/import'
    
    def request_input(msg, show_input = true)
      ask(msg) { |q| q.echo = show_input }
    end
    %>
    
    migration:
      # Other connection information here (host, adapter, etc..)
      username: <%= request_input "Username:" %> 
      password: <%= request_input "Password:", false %> 
    

    当你跑步时

    RAILS_ENV=migration rake db:migrate
    

    系统将提示您输入连接的用户名和密码。确保添加

    gem 'highline'
    

    发送至您的Gemfile

    来源:http://dzone.com/snippets/request-database

    【讨论】:

    • 我确实想到了这一点,但是,问题是根级数据库身份验证信息位于未加密的文本文件中。如果可能的话,我想避免这种情况。
    • highline 解决方案在生产中运行良好。谢谢!有趣的是,它要求输入用户名和密码两次,不过我没有抱怨 - 这是对我们之前的巨大改进:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多