【问题标题】:How can I run a Sequel migration against Mysql with an SSL connetion如何使用 SSL 连接对 Mysql 运行 Sequel 迁移
【发布时间】:2012-08-17 01:08:10
【问题描述】:

我正在尝试针对需要用户名/密码和 ssl 连接的 mysql 数据库运行迁移。如何参考 ca 证书进行 ssl 连接?如果我运行以下命令,它会上升一个Error: Sequel::DatabaseConnectionError: Mysql::ServerError::AccessDeniedError: Access denied

sequel -m db/migrations mysql://root:password@localhost/test

我尝试在命令行中添加 sslca= 参数,但没有接缝工作。

更新

是的,抱歉,您可以在下面看到工作和不工作的代码:

1) 我使用连接到我的数据库的 ruby​​ 代码完美运行

connection = Sequel.mysql2(
  "db_name",
  :user => "username",
  :password => "password",
  :host => "host",
  :port => "port",
  :sslca => File.expand_path(File.join('path', 'to', 'ca.pem')),
  :max_connections => 1
)

2) 这是不起作用的代码,我尝试将 sslca 参数作为 --sslca= 传递,同时带引号和不带引号,但没有一个可以建立连接

sequel -m db/migrations mysql://root:password@localhost/test sslca="path/to/ca.pem"

我得到的错误是:

Error: Sequel::DatabaseConnectionError: Mysql2::Error: Access denied for user 'username'@'host' (using password: YES)/path/to/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect'

【问题讨论】:

    标签: mysql ruby ssl sequel


    【解决方案1】:

    Sequel 的 mysql 适配器将以下 ssl 参数传递给 ruby​​-mysql 库:sslkey、sslcert、sslca、sslcapath、sslcipher。我不确定仅 sslca 是否足够,您可能还需要其他选项之一。

    如果你不能让它与 Sequel 一起工作,我建议尝试直接使用 ruby​​-mysql 让它工作。如果你可以让它与 ruby​​-mysql 一起工作,但不能与 Sequel 一起工作,请告诉我如何,我可能也可以让它在 Sequel 中工作。

    【讨论】:

    • 我尝试了mysql://mysql2:// 协议都没有成功。就sslca 而言,应该没问题,因为当我使用 Sequel.mysql2(..., :sslca => 'path/to/ca.pem') 从控制台打开连接时,它工作正常。
    • 您能否提供您正在使用的确切代码(仅替换用户/密码部分)用于工作和不工作部分。您实际上并没有显示如何在命令行上添加 sslca 参数(如果您没有引用连接字符串,您可能想尝试一下)。
    • 找到了解决方案,只是我很笨。这是正确的代码:sequel -m db/migrations root:password@localhost/test?sslca="../mysql-ssl-ca-cert.pem" 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 2017-05-07
    • 2017-07-04
    相关资源
    最近更新 更多