我正在尝试配置rails应用程序以远程连接到postgres数据库.我注意到MysqL的连接适配器有选项,指定设置ssl连接所需的信息,但postgres / pg适配器没有等效的选项.
谷歌搜索后,我也找不到任何东西(只通过ssh隧道连接).
这么简单,试图让rails postgres适配器通过ssl连接死路?
谢谢.任何帮助或方向表示赞赏.
-H
解决方法
2012年末,情况似乎发生了变化.尽管文档仍然稀疏,但pg gem似乎会自动协商SSL,并且可以强制jdbc驱动程序使用SSL.
我的应用程序是一个混合的MRI-jRuby应用程序,它访问heroku-postgres,一个需要SSL的云postgresql服务器.
# Gemfile.lock pg (0.14.1) activerecord-jdbc-adapter (1.2.2.1) activerecord-jdbcpostgresql-adapter (1.2.2.1) jdbc-postgres (9.1.901)
pg gem似乎是自动协商SSL.但是,JDBC适配器没有. MRI连接典型的database.yml(没有提到ssl),但是JDBC抛出:
(FATAL: no pg_hba.conf entry for host "xx.xx.xx.xx",user "username",database "database",SSL off)
我最终尝试以JDBC-URL格式指定连接详细信息,并且连接成功:
# jruby database.yml production: adapter: jdbcpostgresql url: jdbc:postgresql://host/database?user=user&password=password&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
(所有设置可能不需要sslfactory)