如何配置Rails以实现对远程数据库的无密码访问
注意:这类似于使用Ruby on Rails和SSH来访问远程服务器上的远程MySQL数据库 ,但OP没有提供太多信息,并且给出的唯一答案没有回答这个问题。
背景
我们最近将远程数据库从密码validation切换到基于ssh密钥的validation。 我已经validation我可以通过优雅的Sequel Pro图形数据库客户端使用以下设置访问数据库(某些名称有意混淆):
MySQL Host: woofwoof.us-west-2.rds.amazonaws.com Username: bowser Database: canine Port: 3306 SSH Host: salt.woofwoof.com SSH User: guardian SSH Key: ~/.ssh/id_rsa
现在我需要Rails连接到同一个数据库,也使用基于ssh密钥的身份validation。
这个问题
我的config/database.yml
文件中包含哪些内容?
到目前为止我有:
canine: adapter: mysql2 database: canine username: bowser host: woofwoof.us-west-2.rds.amazonaws.com port: 3306
…但是如何在config/database.yml
文件中指定SSH Host
, SSH User
和SSH Key
?
附加信息
回到我们的数据库进行密码validation时,以下工作:
canine: adapter: mysql2 database: canine username: bowser password: *secret* host: woofwoof.us-west-2.rds.amazonaws.com port: 3306
首先,您需要在MySQL服务器上建立SSH隧道。 在客户端计算机上,运行:
ssh -fNg -L 3307:127.0.0.1:3306 guardian@salt.woofwoof.com
这将建立到salt.woofwoof.com服务器的SSH隧道。 与localhost端口3307的任何连接都将通过隧道发送到端口3306上的远程主机。
然后像配置本地连接一样配置database.yml,但是指定转发端口3307:
canine: adapater: mysql2 database: canine username: bowser password: *secret* port: 3307
您可能还希望将ssh隧道设置添加到/ etc / inittab,以便在引导后建立隧道。 有关如何执行此操作的示例,请参见http://chxo.com/be2/20040511_5667.html 。
- Rails:db / schema.rb中的差异 – null:false:created_at / updated_at列
- Rails应用程序错误 – ActiveRecord :: PendingMigrationError正在等待迁移; 运行’rake db:migrate RAILS_ENV = development’来解决此问题
- 如何迁移现有记录以匹配rails中的新ORM
- Rails 3,将模型中的字段从字符串更改为日期时间类型
- 在Mac OS x Lion上安装mysql2 gem
- 如何使用Rails 2.1和MySQL定义BigInt主键?
- 如何选择一天中每小时的最新记录
- 如何将数据从生产数据库迁移到开发数据库(Rails 4)?
- Rails 3 Mysql问题