Skip to main content
search
0
Ruby&Rails

Rails MySQL2 Blazer SSL connection error解決方法

By 2023年7月17日No Comments
エラー文
ActiveRecord::ConnectionNotEstablished (SSL connection error: error:0A000102:SSL routines::unsupported protocol):
Rails7でgem mysql2をつかってMySQL(XserverにSSHトネリング)に繋いでいた。
BlazerでMySQLのデータを見ようとしたら上記のエラー文
ローカル開発環境では問題なくみれるのに本番環境(Ubuntu)では見れない。
おそらく原因がSSL/TLS設定まわりやOpenSSLまわり(バージョンの不一致)だろうということで、
考えられる解決策にはXserverの設定変更ができないものも含まれる。
今後ローカル環境やXserverを含めてアップデートしたりばらばらであったとしても
セキュリティを担保しつつ確実に接続できる方法をわかっておきたい。
今回はその時のためのメモ。
Blazerで設定する際にurlにて設定する必要がある。
実際の解決策は
Railsので使用していた.envファイル(gem dotenv)の環境変数に
MYSQL_DATABASE_URL = mysql2://username:password@hostname:port/dbname
の最後にオプションをつける。
今回のケースではSSLを無効にしたいので
mysql2のドキュメントにあるSSL/TSL Options(https://github.com/brianmario/mysql2#ssltls-options)にある
:ssl_mode => :disabled
例:DATABASE_URL=mysql2://sql_user:sql_pass@sql_host_name:port/sql_db_name?option1=value1&option2=value2
?とオプションを追加する方法を参考にして
以下にする。
MYSQL_DATABASE_URL = “mysql2://username:password@hostname:port/db_name?ssl_mode=disabled”
参考