2026.01.26

MySQL

MySQL 9.6.0 Innovationリリース(リリース日:2026年1月20日)

監査ログ関連

  • audit_log_rotate_on_sizeシステム変数を更新し、変更にはAUDIT_ADMIN権限が必要になりました。(バグ #38620615)
  • MySQLは、Audit Logコンポーネントの導入により、よりモジュール化され効率的な監査システムをサポートするようになりました。このアップデートでは、モノリシックなAudit Logソフトウェアがより小さく管理しやすいコンポーネントに分割され、MySQLコンポーネントにカプセル化されるため、インストール、管理、保守が容易になります。新しいコンポーネントベースのアーキテクチャにより、柔軟性とカスタマイズ性が向上し、ユーザーは出力ファイルの場所、形式、バッファサイズなどの監査ログ設定を簡単に設定できます。この機能強化により、MySQLはより合理化されたユーザーフレンドリーな監査エクスペリエンスを提供するため、データベースアクティビティの監視と分析に集中しやすくなります。
    詳細については、MySQL Enterprise Audit Componentをご覧ください。(WL #12716)

コンパイル関連

  • MySQL Serverのclang-tidy設定では、hicpp-braces-around-statementsを含むすべての括弧チェックが常に無効になり、重複した診断を回避できるようになりました。(バグ #38601902)
  • いくつかの未使用のシンボルがコードベースから削除されました。(バグ #38557463)
  • cmakeマクロ MYSQL_CHECK_PROTOBUFは、システム protobufの使用時に複数の呼び出しを適切に処理しませんでした。次のようなエラーが返されました:
    ADD_LIBRARY cannot create imported target
    "ext::libprotobuf" because another target with the same
    name already exists.

    (バグ #38417986)

設定関連

  • mysqlx_portサーバー変数は、Type and Networking設定ページで設定した場合、my.iniファイルに保存されませんでした。(バグ #38728671)
  • MySQL Configuratorは、シングルクォート (')をパスワードの一部として扱いました。
    Configuratorは、パスワードの先頭と末尾から引用符、二重引用符、またはバッククォートを削除することで、引用符で囲まれたパスワードを正しく処理できるようになりました。(バグ #38069029)
  • --server-file-permissions-accessで指定したとおりにサーバーファイル権限が適用されませんでした。定義された値に関係なく、フルアクセスが許可されていました。(バグ #38068994)
  • スロークエリログが有効化されていない場合でも、--slow-query-log-fileが使用可能でした。(バグ #38068822)
  • 一般ログが無効化されている場合に、--general-log-file CLIオプションを設定できました。
    このリリースでは、エラーが返されます。 (バグ #38068775)
  • TCP/IP接続が無効になっている場合に、--open-win-firewallが使用できました。
    このリリースでは、--open-win-firewallはTCP/IP接続が有効になっている場合にのみ使用できます。(バグ #38068699)
  • MySQL Configuratorによるパスワードの更新に長い時間がかかりました。(バグ #37459271)

Doxygen関連

  • Server APIドキュメントにおいて、いくつかの問題が修正されました。
    (バグ #114671、バグ #117516、バグ #37329988、バグ #37615382、バグ #36526371)

GTIDを使用したレプリケーション

  • MySQL Serverは、新しいGTIDセットデータ構造をサポートするようになりました。これにより、グローバルトランザクションID(GTID)を処理するための、よりシンプルで最新かつ効率的なライブラリが提供されます。この実装は既存のライブラリに代わるものであり、メンテナンス性とパフォーマンスが向上します。(WL #16076)

InnoDB関連

  • InnoDB: InnoDBのREDOログエラーメッセージに、現在のLSNとREDOログ容量の情報が含まれるようになりました。現在のLSNを含む新しい警告コード ER_IB_WRN_REDO_DISABLED_INFOが追加されました。また、現在のログ容量と現在使用されているログ容量を含む新しいエラーコード ER_IB_MSG_LOG_WRITER_WAIT_ON_NEW_LOG_FILE_INFOが追加されました。MONITOR出力が拡張され、REDOログ容量の詳細と現在のログ容量が含まれるようになりました。
    警告 ER_IB_WRN_REDO_DISABLEDとエラー ER_IB_MSG_LOG_WRITER_WAIT_ON_NEW_LOG_FILEは削除されました。(バグ #37645185)
  • InnoDB: サーバーのシャットダウンまたはクラッシュ時にXA PREPAREDトランザクションが存在する場合、--innodb-force-recoveryに0以外の値を指定してサーバーを再起動すると、InnoDBがトランザクション状態を誤ってPREPAREDからACTIVEに変更しました。これにより、アサーションエラーからPREPAREDトランザクションのロールバックに至るまで、様々な問題が発生する可能性がありました。(バグ #35659774)
  • InnoDB: InnoDBは、プライマリキーのないテーブルで一意のROWID値をより効率的に生成するようになりました。(バグ #13395168)
  • InnoDB: dict_table_t構造体のフィールド fk_max_recusive_levelは使用されなくなり、削除されました。
    (バグ #119063、バグ #38492574)
  • InnoDB: トランザクションのコミット中にサーバーがクローズした場合、既にコミット済み状態のトランザクションがUNDOログに残る可能性があります。トランザクションが既にコミットされている場合、リカバリ時にtrx_sys->rw_trx_listからは削除されますが、trx_sys->shardsのactive_tw_trxsからは削除されません。trx_sys->shardsに保存されたこの無効なトランザクションは、後続クエリの実行時にエラーやアサーションを引き起こす可能性があります。
    本リリースでは、起動時のクリーンアップ処理中に、処理済みのトランザクションはtrx_sys->shardsに追加されません。
    (バグ #118515、バグ #38132549)
  • InnoDB: 小規模な部分更新後にBLOBデータを選択すると、BLOBオブジェクトのマルチバージョン同時実行制御 (MVCC) の不整合により、誤った結果が返される可能性があります。 (バグ #114138、バグ #36342348)
  • InnoDB: FLUSH TABLE FOR EXPORTとDROP TABLEおよびDML操作を同時に実行すると、デッドロックが発生する可能性がありました。(バグ #110485、バグ #35221441)
  • バルク挿入に関する問題を修正しました。(バグ #38208188)
  • MySQL Serverは、コンテナによって設定されたCPUおよびメモリリソース制限を検出して遵守するサーバーの機能を制御できる新しい起動オプション container_awareをサポートするようになりました。(WL #16937)

JavaScriptプログラム

  • GraalVMのパフォーマンスメトリクスがWindowsで利用できるようになりました。(バグ #38498718)
  • SHOW CREATE LIBRARYコマンドは、上位ビットが設定された各バイトの前にFFFFFFパターンを持つ、x86_64アーキテクチャ上のバイナリライブラリの16進表現を生成しました。
    (バグ #118927、バグ #38458235)

JSON二面性ビュー

  • JSON二面性ビューのI_Sビューで報告されるテーブルIDは、計算順序の違いによりORACLE DBによって報告されるものと異なり、複数のContent_tree_nodesが同じ基本テーブルを参照している場合にREFERENCED_TABLE_ID値が不一致になります。(バグ #38624596)

ロギング関連

  • MySQLは、GCS/XCOMトレースファイルエントリにタイムスタンプを追加することで、強化されたデバッグ機能をサポートするようになりました。
    詳細については、Group Replication System Variablesの group_replication_communication_debug_optionsシステム変数のドキュメントを参照してください。(WL #17008)

MySQL Enterprise関連

  • Option Trackerは、MySQL ShellとMySQL Shell for VS Codeをサポートするようになりました。
    以下のステータス変数が追加されました:

    • option_tracker_usage-MySQL_Shell_VSC_Natural_Language_to_SQL
    • option_tracker_usage-MySQL_Shell_VSC_HeatWave_Chat
    • option_tracker_usage-MySQL_Shell_VSC_Natural_Language_to_SQL
    • option_tracker_usage-MySQL_Shell_VSC_Lakehouse_Navigator
    • option_tracker_usage-MySQL_Shell
    • option_tracker_usage-MySQL_Shell_for_VS_Code
    • option_tracker_usage-MySQL_Shell_Dump
    • option_tracker_usage-MySQL_Shell_VSC_Dump
    • option_tracker_usage-MySQL_Shell_Dump_Load
    • option_tracker_usage-MySQL_Shell_VSC_Dump_Load
    • option_tracker_usage-MySQL_Shell_MRS
    • option_tracker_usage-MySQL_Shell_VSC_MRS
    • option_tracker_usage-MySQL_Shell_Copy
    • option_tracker_usage-MySQL_Shell_Upgrade_Checker
  • 以下のシステム変数が追加されました:
    • component_option_tracker.mysql_shell_support

    Option Tracker Componentを参照してください。(WL #16659、WL #17000)

オプティマイザー関連

  • 共通テーブル式 (CTE) に関する問題を修正しました。(バグ #38573285)
  • coalesce関数またはany_value関数を、json_searchやjson_removeなどの特定のJSON操作で使用すると、アサーションエラーが発生する可能性がありました。(バグ #38549573)
  • 負の年の値が、あるメソッドでは有効なdatetime値として受け入れられましたが、別のメソッドでは受け入れられませんでした。
    負の年の値は常にエラーとして報告されるようになりました。(バグ #38487373)
  • 特定のSELECTクエリの実行に関する問題を修正しました。(バグ #38465147、バグ #38465178)
  • 特定のSQLクエリの実行に関する問題を修正しました。(バグ #38448700)
  • SHOW CREATE TABLEに関する問題を修正しました。 (バグ #38298692)
  • REGEXPを使用したクエリは、直接クエリとして実行する場合よりも、プリペアドステートメントとして実行する場合の方が時間が長くかかりました。(バグ #114056、バグ #36326728)

パッケージング関連

  • OpenSSLライブラリがバンドルされているプラ​​ットフォームでは、MySQL Server用のリンクされたOpenSSLライブラリがバージョン3.0.18にアップデートされました。詳細については、OpenSSL 3.0 Series Release Notesをご覧ください。(バグ#38632932)

パフォーマンススキーマ関連

  • 重要な変更: 新しいPerformance Schemaテーブル TEMPORARY_ACCOUNT_LOCKSを使用して、一時的にロックされたアカウントを表示できるようになりました。
    Performance Schemaテーブル HOST_CACHEが以下の列で拡張されました:

    • COUNT_ACCOUNT_LOCKED_ERRORS: 永続的にロックされたアカウントによって発生したエラーの数。
    • COUNT_TEMPORARY_ACCOUNT_LOCKED_ERRORS: 一時的にロックされたアカウントによって発生したエラーの数。

    (バグ #37378977、WL #16803)

  • 変数のクエリに関する問題を修正しました。(Bug #38100668)
  • Performance Schemaが、MySQL以外のクライアントからのプリペアドステートメントのSQLまたはダイジェストをキャプチャしませんでした。(バグ #114480、バグ #36445818)
  • WHERE内のダイジェストの負の数値が適切に解析されませんでした。
    (バグ#110045、バグ#35078042)
  • Telemetry Logging用に次のログが計測されるようになりました:
    • Slow Query Log
    • General Log

    The setup_loggers TableとConfiguring Log Telemetryを参照してください。(WL #17167)

プラガブル認証

  • 存在しないユーザーでMySQLサーバーに接続すると、ユーザー名の長さやMySQLのバージョンに関わらず、常に"Access denied for user"というエラーメッセージが返されるようになりました。以前は、次のようなエラーが返されていました:
    ERROR 1045 (28000): Access denied for user
    'foo'@'localhost' (using password: NO), ERROR
    1524 (HY000): Plugin 'mysql_native_password' is not
    loaded

    (バグ #36527984)

セキュリティ関連

  • 認証に関する問題を修正しました。(バグ #118447、バグ #38077617)
  • 既存のユーザー名でユーザーを作成しようとした時に返されるエラーメッセージが不明瞭でした。(バグ #28331、バグ #11746738)
  • MySQLは、MD5()およびSHA1() SQL関数を別のコンポーネントに再配置することで、セキュリティと柔軟性を強化しました。これにより、非推奨のハッシュアルゴリズムをより細かく制御できるようになり、セキュリティ標準への準拠も向上しました。classic_hashingコンポーネントをインストールすると、アプリケーションでMD5()およびSHA1()関数を引き続き使用できるため、シームレスな移行が保証され、データベース操作の整合性が維持されます。今回のアップデートにより、これらの関数を使用するかどうかを選択できるようになり、業界標準で定義されている不適切なハッシュアルゴリズムを回避することで、より安全な環境が促進されます。
    詳細については、Legacy Hashing Componentを参照してください。(WL #16956)

SQL構文関連

  • MySQL Serverは、JSON二面性ビューにおいて、テーブルレベルのDMLタグ付けをサポートするようになりました。JSON二面性ビューを定義する時に、テーブルごとに許可するDML操作 (INSERT、UPDATE、DELETE)を明示的に指定できます。また、特定の操作を明示的に禁止するための制限タグ (NO INSERT、NO UPDATE、NO DELETE)もサポートされています。これらのタグの組み合わせを指定できます。実行時に、JSON二面性ビューは、構成されたタグに対して受信DML操作を検証し、それに応じて操作を受け入れるか拒否します。これにより、単一の二面性ビュー定義内での書き込み操作をテーブルごとに制御できるようになります。この動作は、Oracle DB JSON二面性ビューと互換性があります。
    詳細については、CREATE JSON DUALITY VIEW Statementを参照してください。(WL #17053)

追加または変更された機能

  • opentelemetry-cppのバンドルバージョンがバージョン 1.23.0にアップグレードされました。(バグ #38483354)
  • このリリースでは、ROLLUPのないクエリでもGROUPING()が許可されます。(バグ #38168051)

バグ修正

  • InnoDB: 特定の状況下で、que_eval_sqlインターフェースの使用時に競合状態が発生する可能性がありました。(バグ #118705、バグ #38310595)
  • mysqltestは、失敗したSQLステートメントのシンボリックエラーコード(エラー名)を出力しませんでした。(バグ #38743161)
  • アップグレード後にシステム変数に対してSET PERSISTを実行すると、mysqld-auto.cnf内の異なるセクション間で変数エントリが重複することがあります。(バグ #38680162)
  • 永続化されたbinlog_expire_*オプションがロードされる前にバイナリログが消去されました。(バグ #38554467)
  • ユーザーとロールの変更に関する問題を修正しました。(バグ #38492547)
  • --basedirオプションを既存の絶対パスに設定して開始されたLinuxデバッグ ビルドでは、local_mysql_homeが特定の文字で終了することをアサートしなくなります。(バグ #38483568)
  • Auto_releaserの実行前にMDLを解放すると、ロックが解放されないために、デバッグビルドでアサートが発生する可能性がありました。(バグ #38430539)
  • 地理的に分散したInnoDB Cluster内の6つのインスタンスのうち2つが接続を失うと、プライマリサーバーが応答しなくなり、COMMITおよびINSERT 操作も応答しなくなりました。(バグ #38380392)
  • ユーザー名の処理に関する問題を修正しました。(バグ #38355483)
  • mysqldumpの--order-by-primaryオプションが、プライマリキーだけでソートするのではなく、テーブル上のすべてのインデックスでデータをソートしました。(バグ #38284832)
  • スレッドプールが接続の終了をブロックすることに関連するいくつかの問題を修正しました。(バグ #38170188、バグ #36782728、バグ #38549372)
  • 特定の状況下では、アップグレードに使用すると、mysqlpumpがSQLモードとストアドプロシージャの照合順序を変更します。(バグ #38154661)
  • パーサーのいくつかの問題を修正しました。(バグ #37866044、バグ #38483735)
  • セキュリティと互換性を強化するために、非推奨ではないOpenSSLアルゴリズムを使用するようにMySQL Serverをアップグレードしました。(バグ #33951773)
  • 外部認証されたユーザーに対してパスワード有効期限ポリシーを指定することが可能でした。(バグ #32724080)
  • replica-skip-errorsオプションが原因で、GTIDギャップが生成されました。(バグ #28590993)
  • mysqldumpで--routinesオプションを使用した時、バックスラッシュを含むデータベース名が正しく引用符で囲まれませんでした。 (バグ #22240504)
  • Windowsプラットフォームで--skip-grant-tablesを使用してサーバーを起動した場合、権限がチェックされず、リモート接続が許可されませんでした。その結果、サーバーが起動しない可能性がありました。(バグ #118805、バグ #38328780)
  • (バグ #97091、バグ #30381098)
  • wait_timeoutとsql_modeのMODE_IGNORE_SPACEは、接続時にのみ設定されました。これらはreset_connection時にも設定されるべきでした。
    (バグ #97091、バグ #30381098、バグ #97666、バグ #30551153)
  • メタファイルにアクセスできなくなった時に、CSVエンジンでメモリ管理の問題が発生しました。
    (バグ #93394、バグ #28987279)
  • MySQL設定ファイル内の!includedirまたは!includeディレクティブの末尾のコメントにより、サーバーの起動が妨げられる可能性があります。(バグ #87657、バグ #26750972)

MySQL 9.6.0 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql/9.6/en/news-9-6-0.html


MySQL Editions

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