OSS探訪

RubyからMySQL・MariaDBへ接続し、SQLクエリ・prepared statement・streamingで結果を扱う

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
2,276
主要言語
Ruby
ライセンス
MIT
リポジトリ最終更新
2026/09/09
ページ内ナビ

概要

mysql2は、RubyからMySQL互換serverへ接続するnative extensionのgemです。Mysql2::Client、Mysql2::Result、Mysql2::StatementのAPIで接続、query、prepared statement、結果の反復処理を扱います。MySQLのlibmysqlclientまたはMariaDBを含む互換client libraryへlinkして動作します。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

接続・query・prepared statementを小さなAPIで扱う

Mysql2::Clientが接続、Mysql2::Resultがquery結果、Mysql2::Statementがprepared statementを担当します。複雑なC APIをそのまま露出せず、Rubyから一般的なdatabase操作を扱える構成です。

出典:[1]

UTF-8、TLS、connection optionをclient library経由で設定する

connectionではUTF-8またはbinaryを使い、ssl_modeなどのTLS optionやMySQL設定file、socket、host等を指定できます。利用できるTLS機能はlinkしたMySQL/MariaDB client libraryとserverのsupportにも依存します。

出典:[1]

大きな結果はstreamingし、必要に応じてasync queryを使う

:stream => trueでrowを必要な分だけ取得でき、:async => trueではquery送信後にsocket readinessを監視して結果を受け取れます。

出典:[1]

向いている用途

RailsやRuby applicationからMySQL系databaseを利用する場合に向く

Active Recordではadapterにmysql2を指定でき、通常のRuby applicationでも直接Client APIを利用できます。MySQLまたはMariaDBをbackendにするRuby serviceのdatabase接続層として使えます。

出典:[1]

導入前の確認

native extensionのbuildにclient libraryとheaderが必要

install時にMySQL libmysqlclient、Connector/C、またはMariaDB等の互換libraryへlinkします。platformによってlibmysqlclient-devやlibmariadb-dev等のdevelopment packageが必要です。

出典:[1]

streamingとasyncの制約をconnection設計へ反映する

streaming中は全rowを読み終えるまで同じconnectionで次のqueryを実行できません。またREADMEではasync queryはWindows非対応とされています。concurrencyが必要な場合はconnection poolも含めて設計します。

出典:[1]

stable releaseとnative dependencyを一緒に固定する

2026年10月3日時点の最新安定版は0.5.7で、gemspecはRuby 2.0以上を要求します。releaseだけでなく、buildに使うMySQL/MariaDB client libraryとOpenSSLの組み合わせも検証します。

出典:[3][2][1]

参考にした公式資料

  1. [1]mysql2 0.5.7 README(2026-10-03)
  2. [2]mysql2 0.5.7 gemspec(2026-10-03)
  3. [3]mysql2 0.5.7 release(2026-10-03)
  4. [4]mysql2 MIT license(2026-10-03)
編集部からの補足

Ruby側のAPIだけでなく、build時と実行時に使うMySQL/MariaDB client libraryまで含めて互換性を確認する必要があります。containerやCIではdevelopment headerとruntime libraryの配置を同じrelease lineで固定すると再現しやすくなります。

3ステップで試す

  1. 1

    mysql2 0.5.7をインストールする

    MySQL/MariaDB client libraryとdevelopment headerが利用できる環境でstable releaseをversion固定してbuildします。

    gem install mysql2 -v 0.5.7
  2. 2

    native extensionを読み込みversionを確認する

    databaseへ接続せず、gemとnative extensionを正常にloadできることを確認します。

    ruby -rmysql2 -e 'puts Mysql2::VERSION'
  3. 3

    既定のquery optionを確認する

    Client APIを読み込み、既定の:async、:as、:symbolize_keys等を確認します。実接続ではhost、credential、TLSを環境に合わせて設定してください。

    ruby -rmysql2 -e 'p Mysql2::Client.default_query_options'
公式READMEで確認

成長

成長の推移 · 直近30日

2,276 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
1
Open PR
33

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
2,276
Forks
563
Watchers
67
Open Issues
45
Contributors
146
所有者種別
User
主要言語
Ruby
ライセンス
MIT
リポジトリ最終更新
2026/09/09

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?