db:migrate 在 Rails 上使用 JRuby 与远程 Amazon MySQL 通过 SSL 连接时出错
Error in db:migrate using JRuby on Rails with remote Amazon MySQL via SSL connection
jruby 1.7.19 错误(ruby 1.9.3 在 oracle JVM 1.8 上兼容)但与相应计划 ruby 1.9.3 在“rake db:migrate" 以通过 SSL 连接修改 Amazon RDS 的 MySQL。
我在 jruby 环境
下“rake db:migrate” 时收到下面的消息
“耙子中止了!
ActiveRecord::JDBCError:用户 'myid'@'ip_of_my_amazon_rds' 的访问被拒绝(使用密码:YES)
arjdbc/jdbc/RubyJdbcConnection.java:453:在“init_connection”中
任务:TOP => db:migrate
(使用 –trace 查看 运行 任务的完整跟踪)”
计划ruby下的“抽成db:migarate”没有问题。
对于 jruby 和普通 ruby,没有 SSL 的“rake db:migrate”没有问题。
我想知道为什么我通过 SSL 连接收到 jruby 的错误。
我的dabase.yml是
发展:
适配器:mysql2
编码:utf8
游泳池:5
验证服务器证书:真
使用SSL:真
需要 SSL:真
主持人:myhosturl.us-东-1.rds.amazonaws.com
端口:3306
sslca: rds-combined-ca-bundle.pem
用户名:myid
密码:我的密码
数据库:开发
Gemfile中对应的gem是
gem 'mysql2',平台::ruby
gem 'jdbc-mysql',平台::jruby
gem 'activerecord-jdbc-adapter',平台::jruby
gem 'jruby-openssl',平台::jruby
我可以在 jruby 和 ruby 环境下通过“rails dbconsole”命令连接同一个数据库而不会出错——即使在database.yml 文件。我从亚马逊网站上抓取了 rds-combined-ca-bundle.pem 文件并将其放在我的应用程序的根目录下。我使用 rbenv 来切换环境。
我想在带有 jruby 的 rails 应用程序中使用 Java 库。如果您有任何解决问题的想法,我将不胜感激。
务必将 JDBC 特定选项放在 properties:
下
development:
adapter: mysql2
encoding: utf8
pool: 5
host: myhosturl.us-east-1.rds.amazonaws.com
port: 3306
sslca: rds-combined-ca-bundle.pem
username: myid
password: mypassword
database: develop
properties:
useSSL: true
requireSSL: true
verifyServerCertificate: true
您仍然可能需要将证书 (sslca
) 包装成 Java 的格式,只需阅读 jdbc doc 如何...您不需要手动设置属性 - 可以在命令行或 JRUBY_OPTS
中指定,例如-J-Djavax.net.ssl.keyStore=/opt/tomcat/etc/myKS.jks
jruby 1.7.19 错误(ruby 1.9.3 在 oracle JVM 1.8 上兼容)但与相应计划 ruby 1.9.3 在“rake db:migrate" 以通过 SSL 连接修改 Amazon RDS 的 MySQL。
我在 jruby 环境
下“rake db:migrate” 时收到下面的消息“耙子中止了! ActiveRecord::JDBCError:用户 'myid'@'ip_of_my_amazon_rds' 的访问被拒绝(使用密码:YES) arjdbc/jdbc/RubyJdbcConnection.java:453:在“init_connection”中 任务:TOP => db:migrate (使用 –trace 查看 运行 任务的完整跟踪)”
计划ruby下的“抽成db:migarate”没有问题。 对于 jruby 和普通 ruby,没有 SSL 的“rake db:migrate”没有问题。 我想知道为什么我通过 SSL 连接收到 jruby 的错误。
我的dabase.yml是
发展: 适配器:mysql2 编码:utf8 游泳池:5 验证服务器证书:真 使用SSL:真 需要 SSL:真 主持人:myhosturl.us-东-1.rds.amazonaws.com 端口:3306 sslca: rds-combined-ca-bundle.pem 用户名:myid 密码:我的密码 数据库:开发
Gemfile中对应的gem是
gem 'mysql2',平台::ruby gem 'jdbc-mysql',平台::jruby gem 'activerecord-jdbc-adapter',平台::jruby gem 'jruby-openssl',平台::jruby
我可以在 jruby 和 ruby 环境下通过“rails dbconsole”命令连接同一个数据库而不会出错——即使在database.yml 文件。我从亚马逊网站上抓取了 rds-combined-ca-bundle.pem 文件并将其放在我的应用程序的根目录下。我使用 rbenv 来切换环境。
我想在带有 jruby 的 rails 应用程序中使用 Java 库。如果您有任何解决问题的想法,我将不胜感激。
务必将 JDBC 特定选项放在 properties:
development:
adapter: mysql2
encoding: utf8
pool: 5
host: myhosturl.us-east-1.rds.amazonaws.com
port: 3306
sslca: rds-combined-ca-bundle.pem
username: myid
password: mypassword
database: develop
properties:
useSSL: true
requireSSL: true
verifyServerCertificate: true
您仍然可能需要将证书 (sslca
) 包装成 Java 的格式,只需阅读 jdbc doc 如何...您不需要手动设置属性 - 可以在命令行或 JRUBY_OPTS
中指定,例如-J-Djavax.net.ssl.keyStore=/opt/tomcat/etc/myKS.jks