数据库 关于 database.yml 里密码的设置

DEEGAN · 2012年03月10日 · 最后由 allenwei 回复于 2012年03月11日 · 7246 次阅读

因为我是初学者 database.yml 一般都是填写 root 密码为空 但是要是部署到生产环境里的话 数据库是有密码的啊 这时要怎么写呢? 是要直接明文填写吗? 要是填了明文也不安全啊 那在 git 里要去掉 database.yml 了喽?

我是一直跟着 rails_tutorial 学习的 这教程里面教的都是直接 sqlite3 然后啥也不填 再然后直接推到 heorku 所以这个问题没搞清楚 求大神指教 谢谢

是的,git 里去掉有密码的配置文件,再把它们加到 gitignore 里

也可以试试 mongoid 的方法http://mongoid.org/docs/installation/configuration.html

development:
  host: localhost
  database: godfather_development

test:
  host: localhost
  database: godfather_test

# set these environment variables on your prod server
production:
  host: <%= ENV['MONGOID_HOST'] %>
  port: <%= ENV['MONGOID_PORT'] %>
  username: <%= ENV['MONGOID_USERNAME'] %>
  password: <%= ENV['MONGOID_PASSWORD'] %>
  database: <%= ENV['MONGOID_DATABASE'] %>
  # slaves:
  #   - host: slave1.local
  #     port: 27018
  #   - host: slave2.local
  #     port: 27019


谢谢@lainuo 指教 学习了:)刚刚去 github 查了几个 rails 的项目 确实看到都把 config/database.yml 放进 gitignore 里面了。

@cqpx 谢谢。第一次知道 mongoid。这个方法看起来挺好 不用写明文 不过我不太懂怎么在 producton server 上设置这个ENV[ ] 呢?

#4 楼 @DEEGAN 这是操作系统的环境变量

弄个 example 文件,部署的时候填

#5 楼 @fsword 谢谢。请问 ENV[ ] 这个是 hash 吗?要在哪里设置呢 linux 我只知道能在.bashrc 里面设置环境变量 是要在哪里面一个一个的设置吗 有没有例子可以看一下 多谢多谢

你可以在服务器上放一个真正的 database.yml

然后在 capistrano 里设置一个 task

run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"

#4 楼 @DEEGAN sorry..这好像是 mongoid 特有的办法。。 还是用 Rei 说的办法,平时写个 database.yml.example,部署的时候在 server 上改吧..

#6 楼 @Rei #9 楼 @cqpx 谢谢!刚才脑子不灵光 现在明白了!好办法!

我们之前用的一个办法是用一个 secret file 去渲染 databases.yml.erb,secret file 只在有权限部署的人那里传递,不妨在版本控制里面

需要 登录 后方可回复, 如果你还没有账号请 注册新账号