アカウント管理関連
- MySQLは、新しいオプション activate_mandatory_rolesの導入により、強化されたロール管理をサポートするようになりました。
 activate_all_roles_on_loginが有効な場合、activate_mandatory_rolesは無視され、必須ロールと付与ロールの両方がアクティブ化されます。activate_all_roles_on_loginが無効で、activate_mandatory_rolesが有効な場合、アカウントに関連付けられたデフォルトロールに加えて、必須ロールもアクティブ化されます。
 どちらもアクティブ化されていない場合は、アカウントのデフォルトロールのみがアクティブ化されます。
 activate_mandatory_rolesはデフォルトで有効です。(WL #16597)
監査ログ関連
- 監査ログ戦略に関する問題を修正しました。(バグ #38223011)
- 複数のgeneral_sql_command.strフィールドをEnterprise Auditフィルターに追加することに関連するパフォーマンスが向上しました。(バグ #38053242)
- audit_log_readのパフォーマンスに関する問題を修正しました。(バグ #36281295、バグ #38275868)
認証関連
- セキュリティ強化: caching_sha2_password_digest_roundsのデフォルト値が10,000に増加されました。(WL #16974)
- 特定の状況下において、設定されたデータディレクトリパスがデフォルトパスよりも短い場合、キーリングコンポーネントが設定ファイルを読み取ることができませんでした。(バグ #38078884)
- 汎用キーリング関数が無効なパラメータを正しく処理しませんでした。(バグ #38055488)
バイナリロギング
- 重要な変更: binlog_transaction_dependency_history_sizeサーバーシステム変数のデフォルト値が25000から1000000 (百万) に増加されました。この変数の最大値も1000000から10000000 (千万) に増加されました。
 この変更は、既存の設定に直ちに影響を与えることはありません。
 詳細については、binlog_transaction_dependency_history_sizeの説明を参照してください。(WL #16439)
コンパイル関連
- Solaris: Solaris上でMySQLをコンパイルする際に、ClangとGCCを使用できるようになりました。(バグ #30562248)
- Solaris上でOpenSSL 3が使用されるようになりました。(バグ #38193362)
- バンドルされているgoogletestライブラリをバージョン 1.17にアップグレードしました。(バグ #38152017)
- バンドルされているlibbacktraceライブラリを最新バージョン (2025年4月) にアップグレードしました。(バグ #38151970)
- MySQL Serverにlibzipがバンドルされるようになり、サーバーのコンパイル時にバンドルライブラリとシステムライブラリのどちらかを選択できるCMAKEオプションが提供されるようになりました。(バグ #38109824)
- サポート対象プラットフォームでは、CMAKEの最小必要バージョンが3.17.5になりました。 (バグ #38090672)
- GCC 15でMySQL Serverをビルドすると、コンパイラの警告がログに記録されました。(バグ #37721464)
コンポーネント関連
- MYSQL_OPTION.OPTION_USAGE.OPTION_NAMEフィールドは、PERFORMANCE_SCHEMA.MYSQL_OPTION.OPTION_NAMEとは異なる文字セットを使用しました。
 本リリースでは、MYSQL_OPTION.OPTION_USAGEのCLUSTER_ID、SERVER_ID、および OPTION_NAMEフィールドは、asciiではなくutf8mb4_general_ciを使用します。(バグ #38230424)
- mysql_command_error_infoサービスのsql_errno()メソッドは、コマンドが失敗した時に、適切なエラーコードではなく0を返しました。(バグ #38178087)
- サーバープラグインのシステム変数フラグ PLUGIN_VAR_NOSYSVARが正しく処理されませんでした。このフラグを使用して定義された変数が、非表示であるべき時に表示されました。 (バグ #37654916)
- キーリングUDFプラグインを使用し、keyring_key_generate関数で特定のクエリを実行した時に、エラーが正しく処理されませんでした。(バグ #37501458)
- Telemetryコンポーネントにシークレットデコードサービスが導入されました。これにより、OpenTelemetry用の独自のシークレットデコードサービスを作成できます。
 以下のシステム変数とステータス変数が追加されました:- telemetry.otel_exporter_otlp_traces_secret_headers
- telemetry.otel_exporter_otlp_metrics_secret_headers
- telemetry.otel_exporter_otlp_logs_secret_headers
- telemetry.resource_provider
- telemetry.secret_provider
- telemetry.run_level
 
(WL #16647)
設定関連
- Microsoft Windows: MySQL Serverがサービスではなくプロセスとして設定されている場合、サーバーが接続を受信できる状態になったことを検出する際の遅延により、コンフィギュレータのサーバーの起動手順が完了するまでに長い時間がかかる可能性がありました。(バグ #38068649)
- Microsoft Windows: 共有メモリ接続 (--enable-shared-memory=true) は、サーバー構成中に有効になっている唯一のプロトコルであった場合に失敗しました。(バグ #38068619)
- Microsoft Windows: 新しいサーバー設定時に、エスケープ文字 (一重引用符または二重引用符を使用) を含むユーザー名を作成できませんでした。(バグ #37459624)
- Microsoft Windows: アップグレードする時(例えばバージョン 9.1.0から9.2.0に)に、デフォルト以外のポート (3307など) を使用すると、サーバー設定が正しくアップグレードが成功した場合でも、ポート 3306への接続問題を示すメッセージが生成される可能性がありました。以下のようなエラーが返されました:
Can't connect to MySQL server on 'localhost:3306' (10061)
- Microsoft Windows: MySQL ConfiguratorのCLIヘルプが、設定可能なサーバーオプションでサポートされている値のリストを正しく表示するようになりました。(バグ #37458648)
- --config-type Configurator CLIオプションが値を受け入れませんでした。(バグ #38068684)
(バグ #37459255)
接続管理関連
- 接続制御では、不明なユーザーを遅延基準から除外することがサポートされるようになりました。新しいシステム変数 component_connection_control.exempt_unknown_usersが導入され、管理者は、ユーザー資格情報なしでの接続試行が失敗した時にペナルティを科すかどうかを設定できるようになりました。この機能強化により、ロードバランサーからの正当な接続試行を処理するコンポーネントの能力が向上し、ブルートフォース攻撃を阻止する有効性を維持しながらサーバーの可用性が向上します。新しいステータス変数 Component_connection_control_exempted_unknown_usersは、除外された接続の数に関する情報を提供します。
 詳細については、(xref linkend="to-fill") を参照してください。(WL #17037)
廃止および削除関連
- MySQL 8.4.0で非推奨となったgroup_replication_allow_local_lower_version_joinシステム変数は削除されました。(WL #16019)
- MySQL 8.0.29で非推奨となったreplica_parallel_typeシステム変数は削除されました。(WL #13955)
- SASL LDAP認証におけるSCRAM-SHA-1認証方式は非推奨となり、MySQLの将来のバージョンで削除される予定です。代わりにSCRAM-SHA-256を使用することをお勧めします。
 この作業の一環として、authentication_ldap_sasl_auth_method_nameシステム変数のデフォルト値がSCRAM-SHA-256に変更され、SCRAM-SHA-1は非推奨となりました。
 詳細については、LDAP Pluggable Authenticationを参照してください。 (WL #17022、WL #17034)
- 以下の非推奨プラグインは本リリースで削除されました:
- semisync_masterは、semisync_sourceに置き換えられました。
- semisync_slaveは、semisync_replicaに置き換えられました。
 (WL #16801) 
SQL関数と演算子関連
- 特定のUPDATEステートメントの実行に関連する問題を修正しました。(バグ #37590580)
 参考: この問題は、バグ #31562881のリグレッションです。
InnoDB関連
- 重要な変更: innodb_log_writer_threadsのデフォルト値は、次に示すように、バイナリログが有効になっているかどうかによって部分的に決定されるようになりました:
if (log_bin = OFF) { if ([number of logical CPUs] <= 4) { innodb_log_writer_threads = OFF } else { innodb_log_writer_threads = ON } } else { if ([number of logical CPUs] <= 32) { innodb_log_writer_threads = OFF } else { innodb_log_writer_threads = ON } }バイナリログが無効(log_binがOFF)の場合、デフォルトはMySQL 9.4以前と同様に決定されます。 この変更は、変数の設定値(設定されている場合)には影響しません。 
 詳細については、MySQLドキュメントのinnodb_log_writer_threadsの説明を参照してください。
 また、Optimizing InnoDB Redo Loggingも参照してください。(WL #16999)
- InnoDB: dict_stats_analyze_index()関数は、最適なインデックスベースのアクセスパスを破棄することがあり、空のインデックス統計が同時に読み取られたり、エラーによってインデックス統計が空になったりすると、大規模なテーブルでパフォーマンスが最適ではなくなる可能性がありました。
 (バグ #33472935)
- 並列スキャン用のスレッドの作成に失敗し、シングルスレッドモードにフォールバックした時にアサーションエラーが発生する場合があります。以下のようなエラーが返されました:
Assertion failure: row0pread.h:306:active >= n_threads(バグ #38325137) 
- 特定の状況下で、MySQL Serverの32ビットビルドにおいて仮想インデックスのロールバックが失敗する可能性がありました。(Bug #38167527)
- mlog read_1_bytesコメントは、2バイトではなく1バイトのバイトサイズを正確に反映するようになりました。
 (バグ #38001828)
- バッファプールが非常に大きい場合、各バッファプールインスタンスで多数のチャンクが必要になる可能性があり、オペレーティングシステムが必要なメモリを割り当てられない場合に失敗する可能性がありました。
 今回のリリースでは、この割り当てが正しく行われていることを確認するためにチェックされるようになりました。(バグ #37994397)
- 内部FTS設定の変更に関する問題を修正しました。(バグ #37792010)
- パージコーディネータに関する問題を修正しました。
 (バグ #37628911)
- 仮想インデックスに関する問題を修正しました。(バグ #37602657)
- MySQL Serverは、テーブルの最適化と更新を同時に実行すると、予期しない動作をする可能性がありました。 (バグ #37324137)
- innodb_strict_mode=OFFの設定により行サイズが最大許容サイズを超えた場合、テーブルからの選択や列の削除など、特定の状況で"Cannot add field"といった紛らわしい警告メッセージが表示されることがありました。
 このシナリオにおけるエラーメッセージが改善されました。(バグ #37003342、バグ #36768046、バグ #36867372)
- dict_stats_analyze_index()関数は、最適なインデックスベースのアクセスパスを破棄する可能性がありました。その結果、空のインデックス統計が同時に読み取られたり、エラーが返されて空のインデックス統計になった時に、大きなテーブルのパフォーマンスが最適ではなくなります。
 (バグ #33472935)
- 特定の稀な状況において、パージ操作中に競合状態が発生する可能性がありました。(バグ #32679024)
- 本リリースでは、innodb_change_bufferingのデフォルト値はALLです。これにより、セカンダリインデックスの更新の処理が改善されます。(WL #16967)
JavaScriptプログラム
- JavaScriptストアドプロシージャからのSQL呼び出しにおける結果セットのサイズ制限が引き上げられ、より大きなデータサイズに対応できるようになりました。(バグ #38413760)
- MySQL Multilingual Engineコンポーネントによって提供されるJavaScript言語サポートは、https://262.ecma-international.org/16.0/に示されているように、ECMAScript 2025 言語仕様 (ECMA-262、第15版) に準拠するようになりました。(バグ #38358516)
- 仮想ファイルシステムのパスは、MLEコンポーネントによって正しく処理されませんでした。本リリースでは、./ や ../などの冗長なディレクトリや相対ディレクトリを含むパスはエラーなしで受け入れられます。(バグ #38198011)
- MySQLでは、数式ベースのアプローチを使用してメモリを動的に割り当てることで、オンプレミスでのmle.memory_max変数設定の自動構成をサポートするようになりました。これにより、この変数のデフォルト値は、総物理メモリの5%として計算され、0.4GBから32GBの範囲内に制限されます。
 詳細については、MLE Component Memory and Thread Usageを参照してください。(WL #17033)
JSON関連
- JSON列で5.00000000000000004e36のような指数表記の非常に大きな高精度浮動小数点数を解析すると、チェックサム検証エラーになる可能性がありました。(バグ #38033684)
- TIME列に挿入された大きなTIME値は、JSONに変換すると小さくなりました。(バグ #37458212)
- 空白またはnullのキーと値のペアを含むJSON属性でALTER USERステートメントを使用する時のmysql.user.user_attribute列のJSONキー値の処理に関連する問題を修正しました。(バグ #31067575)
JSON Duality View
- AUTO_INCREMENT列に対する明示的なリクエストとして0を使用することが許可されました。(バグ #38319365)
- JSON Duality Viewのネストされた子のシングルトンの子を削除できました。本リリースでは、JSON Duality Viewのネストされた子のシングルトンの子を削除できなくなりました。(バグ #38305543)
- サブクエリを含むWHERE条件を使用してJSON Duality Viewを作成すると、アサーションエラーが発生し、サーバーが予期せず終了する可能性がありました。次のようなエラーが返されました:
Assertion `nullptr != dynamic_cast(arg)' failed. (バグ #38187473) 
- AUTO_INCREMENT列を含むJSON Duality Viewに対するINSERTステートメントは、その列が結合条件の一部でなくても拒否されました。 (バグ #38179925)
- JSON Duality Viewは、derived_merge=offオプティマイザーヒントが使用された場合、DMLクエリおよびSELECTクエリで一貫性のない動作を示しました。(バグ #38175557)
- JSON Duality ViewのUPDATEステートメントを実行すると、サーバーが予期せず終了することがありました。次のようなエラーが返されました:
Address not mapped to object(バグ #38084877) 
キーリング関連
- component_keyring_kmipまたはkeyring_okvは、Oracle Key Vault (OKV) サーバー 21.10以降で、 SECRETキータイプをサポートするようになりました。(WL #17090)
- これにより、Oracle Key Vault、Gemalto SafeNet KeySecure Appliance、Townsend Alliance Key Manager、Entrust KeyControlなどのKey Management Interoperability Protocol (KMIP) 1.1 互換製品との安全な通信が可能になります。(WL #16524)
MySQLプログラム
- このバージョンには、サーバーの診断情報を収集するために設計された新しいクライアントツール、MySQL Diagnostic Monitor (mysqldm) が含まれています。これは、例えば、効率的な問題解決のためにOracle サポートに提供するためのものです。mysqldmクライアントツールは、サーバー上で定義済みのクエリセットを実行し、結果をJSON形式で保存します。また、出力ディレクトリ、反復回数、反復間の遅延をカスタマイズするためのオプションも提供します。(WL #16973)
オプティマイザー関連
- 一時テーブルがディスクに保存できるほど大きい場合に、結果がtemptableエンジン内のテーブルを読み取るハッシュ結合から取得された時は、行IDによる並べ替えによって誤った結果が生成されることがありました。(バグ #38418831)
- マテリアライゼーションを使用した準結合を使用するクエリでは、条件が欠落しているために誤った結果が返される場合があります。
 (バグ #38110792)
- クエリ実行に関する問題を修正しました。(バグ #37847144)
- DATE値とDATETIME値に個別の評価関数が導入され、これらのデータ型に異なるクラスを使用することでサーバーのパフォーマンスが最適化されました。(バグ #37743288)
- 相関スカラーサブクエリとJSONテーブルを含むSQLクエリに関する問題を修正しました。(バグ #36684370)
- 時刻型データを取得するためのプリペアドステートメントを使用したクエリでは、精度が指定されているかどうかにかかわらず、必ずしも期待どおりの結果が返されるとは限りませんでした。 (バグ #36065557)
- TIME列で WHERE IN (NULL,'xx:xx:xx.xxxxxx'); を使用すると空のセットが返されましたが、WHERE IN ('xx:xx:xx.xxxxxx') を使用すると期待どおりの結果が返されました。(バグ #35500028)
- TIME列でIN()演算子を使用すると、リストにNULLまたは空の文字列が含まれている場合に値が一致した時に空のセットが返される可能性がありました。(バグ #34188599)
- 以下のシステム変数のデフォルト値が変更されました:
- explain_format: TRADITIONALからTREEに変更されました。
- explain_json_format_version: 1から2に変更されました。
 (WL #17039) 
パッケージング関連
- OpenSSLライブラリがバンドルされているプラットフォームについて、MySQL Server用のリンクされたOpenSSLライブラリがバージョン 3.0.17に更新されました。詳細については、OpenSSL 3.0 Series Release Notesをご覧ください。(バグ #38457056)
- Fedora 42へのMySQL Server RPMインストールは、MariaDB 11.8パッケージとの競合により失敗する可能性がありました。以下のようなエラーが返されました:
file /usr/bin/mysqld conflicts between mysql-community-server-8.4.7 and mariadb11.8-server-3:11.8.3, file /usr/share/man/man1/mysql.1.gz conflicts between mysql-community- client-8.4.7 and mariadb11.8, file /usr/lib/systemd/system/mysqld.service conflicts between mysql- community-server-8.4.7 and mariadb11.8-server(バグ #38384844) 
- MySQL Serverは、異なるイノベーションとLTSリリースの並列インストールをサポートするようになりました。(バグ #38104701)
パフォーマンススキーマ関連
- SQL_MODEが非厳密な値に設定されている場合、バイナリプロトコル内の無効な時間値が暗黙的に調整されました。本リリースでは、このような値はエラーで拒否されます。(バグ #38352728)
- 以下のテレメトリシステム変数がデフォルトで有効になっていたため、接続失敗やログスパムが発生しました:
- telemetry.log_enabled
- telemetry.metrics_enabled
- telemetry.trace_enabled
 本リリースでは、これらの変数はデフォルトで無効になっています。(バグ #38345446、バグ #38347061) 
- 以下のテレメトリエンドポイントシステム変数のデフォルト値 (http://localhost:4318/v1/tracesなど) は、ログスパムの原因となり、httpsではなくhttpを使用して定義されました:
- telemetry.otel_exporter_otlp_logs_endpoint
- telemetry.otel_exporter_otlp_metrics_endpoint
- telemetry.otel_exporter_otlp_traces_endpoint
 本リリースでは、これらの変数にデフォルト値はありません。(バグ #38133218) 
- 接続制御プラグインを待機中の接続が、performance_schema.processlistテーブルに表示されませんでした。(バグ #38043683)
- 同じSQL_DIGESTを持つクエリは、ORDER BY句が異なるなど、異なる特性を持つ場合でも、同一のサマリーを生成する可能性がありました。ダイジェスト計算が改善され、これらのクエリをより適切に区別できるようになりました。(バグ #31103386)
プラガブル認証
- 初回接続時にサーバーとクライアントのデフォルトの認証方法が異なっていた場合、--default-auth パラメータを使用すると、authentication_ociプラグインによる認証中にクライアントとサーバーのハンドシェイクエラーが発生しました。次のようなエラーが返されました:
An error occurred during the client server handshake.(バグ #37092159) 
レプリケーション関連
- MySQLレプリケーションは強化されたセキュリティ機能をサポートしており、すべてのレプリケーション接続に対して暗号化がデフォルトで有効になっています。
 この設定変更により、CHANGE REPLICATION SOURCE TOステートメントのSOURCE_SSLオプションのデフォルト値が1に変更され、group_replication_ssl_mode変数のデフォルト値がREQUIREDに変更され、group_replication_recovery_use_ssl変数のデフォルト値がONに変更されました。
 詳細については、Replication Securityを参照してください。(WL #16438)
- 強化されたレプリケーション機能をデフォルトで有効にするために、gtid_modeのデフォルト値がONに変更されました。また、enforce_gtid_consistencyのデフォルト値がONから変更されました。
 詳細については、Replication with Global Transaction Identifiersを参照してください。(WL #8602)
空間データサポート
- ジオメトリ関数は、暗黙的なJSON表現にCRS URNを含めることをサポートするようになりました。これにより、ジオメトリをGeoJSONに変換する時に、空間参照システム情報が保持されるようになります。この機能強化により、JSON Duality Viewでジオメトリ値を正確に表現および更新できるようになります。また、オプション2および4を指定したST_AsGeoJSON関数にも影響し、常にCRS URNが含まれるようになりました。この更新により、ジオメトリタイプからの暗黙的な変換によって生成されたGeoJSONに「crs」属性が追加され、より包括的で正確なジオメトリ表現が提供されるようになります。
 詳細については、Spatial GeoJSON Functionsを参照してください。(WL #16929)
sysスキーマ関連
- sys.ps_trace_threadストアドプロシージャで発生したエラーが適切に処理されませんでした。
 (バグ #34537707)
- sysスキーマストアドプロシージャ revoke_schema_privileges_from_all_accounts_except() がデフォルトでインストールされるようになりました。このプロシージャを使用すると、定義済みの例外リストを除き、すべてのユーザーに対してスキーマの権限を取り消すことができます。
 詳細については、The revoke_schema_privileges_from_all_accounts_except() Procedureを参照してください。(WL #16996)
スレッドプール関連
- MySQLスレッドプールは、ハードウェアベースの自動設定をサポートするようになりました。これにより、基盤となるサーバーのハードウェアを検出し、最適なデフォルトを設定してパフォーマンスを向上できます。プラグインはシステムで利用可能なVCPUの数に基づいてその設定を自動調整し、ユーザーは必要に応じて設定を変更できます。さらに、プラグインは設定ミスのあるパラメータを自動的に検証して修正し、値が自動修正された場合には警告をログに記録します。
 影響を受けるシステム変数は次のとおりです:- thread_pool_size
- thread_pool_max_transactions_limit
- thread_pool_query_threads_per_group
- thread_pool_algorithm
- thread_pool_max_unused_threads
 (WL #16621) 
バグ修正
- CREATE ... SELECTステートメントの論理クロック処理が改善され、レプリカリレーログに正確な論理クロック値が記録されるようになりました。(バグ #38383106)
- サーバーがテーブル参照を正しく処理しない場合がありました。(バグ #38001000)
MySQL 9.5.0 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql/9.5/en/news-9-5-0.html
MySQL Editions

MySQLのサブスクリプションは、24時間365日体制でお客様をサポートいたします。さらに MySQL Enterprise Edition では、データベース管理者支援ツール MySQL Enterprise Monitor やバックアップツール MySQL Enterprise Backup をご利用いただけます。