ページ内ナビ
概要
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]
参考にした公式資料
- [1]mysql2 0.5.7 README(2026-10-03)
- [2]mysql2 0.5.7 gemspec(2026-10-03)
- [3]mysql2 0.5.7 release(2026-10-03)
- [4]mysql2 MIT license(2026-10-03)
編集部からの補足
Ruby側のAPIだけでなく、build時と実行時に使うMySQL/MariaDB client libraryまで含めて互換性を確認する必要があります。containerやCIではdevelopment headerとruntime libraryの配置を同じrelease lineで固定すると再現しやすくなります。
3ステップで試す
- 1
mysql2 0.5.7をインストールする
MySQL/MariaDB client libraryとdevelopment headerが利用できる環境でstable releaseをversion固定してbuildします。
gem install mysql2 -v 0.5.7 - 2
native extensionを読み込みversionを確認する
databaseへ接続せず、gemとnative extensionを正常にloadできることを確認します。
ruby -rmysql2 -e 'puts Mysql2::VERSION' - 3
既定のquery optionを確認する
Client APIを読み込み、既定の
:async、:as、:symbolize_keys等を確認します。実接続ではhost、credential、TLSを環境に合わせて設定してください。ruby -rmysql2 -e 'p Mysql2::Client.default_query_options'
成長
成長の推移 · 直近30日
2,276 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 1
- Open PR
- 33
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- DuckDB41,885 Stars
共通タグ 2件 · 共通カテゴリ 1件
CSV・Parquet・DataFrameをserverなしで直接SQL分析し、application processへ埋め込めるOLAP engine
C++ - MyBatis20,447 Stars
共通タグ 2件 · 共通カテゴリ 1件
SQLを明示したままJava objectへのmappingを整理する
Java - Flyway10,119 Stars
共通タグ 2件 · 共通カテゴリ 1件
database schema変更をversioned migrationとしてcode化し、適用履歴を追跡する
Java - Redash28,831 Stars
共通タグ 2件
複数のデータソースをSQLで分析し、可視化・dashboard・共有・alertをまとめる
Python - Supabase111,027 Stars
共通タグ 1件 · 共通カテゴリ 2件
Postgresを中心にAuth・REST/GraphQL API・Realtime・Storage・Functionsを統合するdevelopment platform
TypeScript - drawDB39,827 Stars
共通タグ 1件 · 共通カテゴリ 2件
データベース構成をブラウザーで描き、SQLと移行差分へ変換する
JavaScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。