jruby jdbcmysql适配器不适用于ssl?

时间:2010-12-07 21:53:02

标签: mysql ssl jdbc jruby gem

我似乎无法让jdbcmysql在ssl上运行。

已下载的宝石:

jdbc-mysql(5.0.4)

jruby-openssl(0.7.1)

使用普通的rails控制台(不是jruby),我让它运行(下面已消毒):

cp = ActiveRecord::Base.establish_connection(
  :adapter => 'jdbcmysql',
  :host => 'host',
  :username => 'user',
  :password => 'pw',
  :database => 'db',
  :sslca => "ca-cert.pem"
)

但是在我调用cp.connection后,同样的命令会抛出这个:

RuntimeError: The driver encountered an unknown error: java.sql.SQLException: Access denied for user 'user'@'host' (using password: YES)

在jruby控制台中。这可能是因为我没有使用ssl,因为我将用户设置为需要ssl。

jdbc-mysql是否不支持ssl?我很确定jdbc适配器能做到。

2 个答案:

答案 0 :(得分:0)

这里发生的事情是mysql客户端是版本5.0而服务器是5.1

语法完全相同,没有ssl的访问有效,但ssl无声地失败:(

答案 1 :(得分:0)

我发现使用jruby / odbc和ssl,你必须使用odbc url param来配置你的连接。文档很少,但我相信MRI gem会默认使用ssl(如果可用),但odbc适配器不会。似乎没有一个密钥可以放在yml / establish_connection中以在odbc上启用ssl。

这适用于这种情况: ssl = true

cp = ActiveRecord::Base.establish_connection(
  :url => 'jdbc:mysql://host/db?user=user&password=pw&ssl=true&sslca=ca-cert.pem'
)

我不确定sslca密钥是否会直接转换,或者它是如何计算路径的。

heroku / postgresql建议添加:sslfactory = org.postgresql.ssl.NonValidatingFactory

仅使用postgresql进行测试,但我确信mysql和大多数所有odbc适配器都可以这样工作。

相关问题