【问题标题】:jruby jdbcmysql adapter does not work with ssl?jruby jdbcmysql 适配器不适用于 ssl?
【发布时间】:2010-12-07 21:53:02
【问题描述】:

我似乎无法让 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 适配器可以。

【问题讨论】:

  • 我是否必须运行一些命令来让服务器识别 ca-cert,而不是像 :sslca => "ca-cert.pem" 那样传递它

标签: mysql ssl jdbc jruby gem


【解决方案1】:

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

语法完全一样,不使用ssl访问也可以,但是使用ssl静默失败:(

【讨论】:

    【解决方案2】:

    我发现对于 jruby/odbc 和 ssl,您必须使用 odbc url 参数来配置您的连接。文档很少,但我相信 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 适配器也可以这样工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多