2023.11.01

MySQL

MySQL 8.0.35 GA版(リリース日:2023年10月25日)

監査ログ関連

  • MySQL Enterprise Auditの削除を簡素化するために、新しいスクリプト audit_log_filter_uninstall.sqlを追加しました。 (バグ #35611072)

認証関連

  • プラガブルなFIDO認証方法は非推奨になり、将来のMySQLリリースで削除される可能性があります。 (WL #15006)

C API関連

  • MySQL 5.1やMySQL 5.0などの以前のディストリビューションには、プラガブル認証をアドバタイズしないサーバーが含まれていました。プラガブルな認証方法を使用する新しいクライアントがこれらの古いサーバーの1つに接続しようとすると、サーバーは“bad handshake”エラーメッセージを発行しました。この修正により、クライアント側の認証(特に--default-authオプション)が、プラガブル認証をサポートしていないサーバーを含む全てのサーバーで適切に機能するようになりました。さらに、サーバーがプラガブル認証をサポートしていない場合、デフォルトの認証方法としてmysql_native_passwordがcaching_sha2_passwordに置き換わるようになりました。 (バグ #90994、バグ #28082093)
  • mysql_ssl_set() C API関数は非推奨となり、将来のMySQLリリースで削除される可能性があります。全てのmysql_ssl_set()パラメータに同等のmysql_options() TLSオプションがあります。 (WL #11091)

コンパイル関連

  • WITH_DEVELOPER_ENTITLEMENTS macOS CMakeオプションを修正しました。タイプミスのため有効になりませんでした。 (バグ #35374026)
  • Clang 12でコンパイルする時に生成される文字列連結の警告を修正しました。(バグ #111614、バグ #35549962)
  • WITH_ZLIB機能をさらに改善しました。 (バグ #111549、バグ #35534309)
  • Protobuf 22ではAbseil依存関係が追加されているため、Protobuf 22以降ではWITH_PROTOBUF=systemを使用したビルドが失敗しました。 (バグ #111469、バグ #111623、バグ #35546459、バグ #35550389)
  • WITH_ZLIB="system"を指定してビルドすると、ZLIBが見つからないため、MySQLビルドが中断されます。
    (バグ #111467、バグ #35511210)
    参考: この問題は、バグ #35057542のリグレッションです。
  • EL7 aarch64ベースのプラットフォームで、MySQLサーバーが予期せず停止する原因となったCPUキャッシュラインサイズの取得時に0が返される方法に関連する問題が修正されました。 (バグ #110752、バグ #35479763)
    参考: バグ #107081、バグ #34095278も参照してください。
  • C++標準化委員会のライブラリワーキンググループは最近、std::pairの比較演算子の定義方法を変更する問題(LWG-3865 Sorting a range of pairs)を解決しました。この修正により、この変更に合わせてsql/authの2つのファイルで使用される等価演算子が更新されます。
    Microsoft Visual Studioチームによる提案に基づいています。 (バグ #110254、バグ #35137978)

非推奨と削除関連

  • レプリケーション: binlog_transaction_dependency_trackingサーバーシステム変数は現在非推奨となり、MySQLの将来のバージョンで削除される可能性があります。この変数の値を設定または取得すると、同等の起動オプション --binlog-transaction-dependency-trackingを使用した場合と同様に、警告がトリガーされるようになりました。この変数(またはオプション)に依存するアプリケーションは、できるだけ早くそれからの移行を開始する必要があります。この変数またはその機能の置き換えは計画されておらず、必要もありません。 (WL #13964)
  • oldおよびnewサーバーシステム変数は非推奨になり、これらの変数のいずれかが設定または読み取られる度に警告が発行されるようになりました。これらの変数はMySQLの将来のバージョンで削除される予定です。これらに依存するアプリケーションは、できるだけ早くそのような依存関係から移行する必要があります。 (WL #8609)
  • --character-set-client-handshakeサーバーオプションは、もともとMySQLの非常に古いバージョンからのアップグレードで使用することを目的としていましたが、現在は非推奨となっており、使用する度に警告が発行されます。このオプションはMySQLの将来のバージョンで削除される予定です。このオプションに依存するアプリケーションは、できるだけ早くこのオプションからの移行を開始する必要があります。 (WL #13220)
  • このリリースの2つの変更は、MySQLの権限の設定に影響します。これらの変更の1つはデータベースの権限設定に影響を与えます。もう1つは、権限設定で使用されるホスト名に関するものです。これらの変更は以下のとおりです:
    • データベースレベルの権限設定。データベースレベルの権限設定でワイルドカードとして文字 % と _ を使用することは現在非推奨となっており、このワイルドカード機能は将来のMySQLリリースで削除される予定です。これらの文字は、partial_revokesサーバーシステム変数の値がONの場合は常にリテラルとして扱われるため、常にリテラルとして扱われることを目的としています。
      例えば、partial_revokesをONに設定すると、GRANT SELECT ON db_.* TO user1により、user1は db_という名前のデータベース内のテーブルから選択できますが、データベース db1、db2、dbx、dbyなどのテーブルから選択することはできません。権限設定のデータベース名でのワイルドカードのサポートが削除されると、常にこれが当てはまると想定してください。
    • 権限設定内のホスト名 '%'。 権限をチェックする際のlocalhostの同義語としてのサーバーによる%の扱いも現在非推奨となっており、MySQLの将来のバージョンで削除される可能性があります。
      現在、'user1'@'%'に付与されている権限は、'user1'@'localhost'にも付与されています。この自動割り当ては現在非推奨です。この動作が削除されると、常に、localhostのホスト名を使用して、'user1'@'localhost'に明示的に権限を付与する必要があります。

      注意
      上記のどちらの場合も、ユーザーセッションやログに警告やエラーは表示されません。
      これは、そのようなメッセージがすぐに大量に生成される可能性があるためです。

    (WL #14280、WL #15676)

  • INFORMATION_SCHEMA.PROCESSLISTは非推奨であり、将来のMySQLリリースで削除される可能性があります。そのため、そのテーブルを使用するSHOW PROCESSLISTの実装も非推奨になります。
    代わりにSHOW PROCESSLISTのパフォーマンススキーマ実装を使用することをお勧めします。そのため、performance_schema_show_processlistも非推奨となり、将来のMySQLリリースで削除される可能性があります。 (WL #15915)
  • TLS_AES_128_CCM_8_SHA256 暗号スイートのサポートは現在非推奨となっており、MySQLの将来のバージョンで削除される可能性があります。それをtls_ciphersuitesまたはadmin_tls_ciphersuites システム変数を使用して設定しようとすると、警告が返されるようになりました。
    以前にサポートされていたいくつかの暗号は現在非推奨となっており、MySQL の将来のバージョンでは削除される可能性があります。 ssl_cipher または admin_ssl_cipher システム変数を使用して非推奨の暗号が指定されている場合、警告が発行されるようになりました。 以下の暗号は、非推奨の警告を表示せずに引き続きサポートされます:

    • ECDHE-ECDSA-AES128-GCM-SHA256
    • ECDHE-ECDSA-AES256-GCM-SHA384
    • ECDHE-RSA-AES128-GCM-SHA256
    • ECDHE-RSA-AES256-GCM-SHA384
    • ECDHE-ECDSA-CHACHA20-POLY1305
    • ECDHE-RSA-CHACHA20-POLY1305
    • ECDHE-ECDSA-AES256-CCM
    • ECDHE-ECDSA-AES128-CCM
    • DHE-RSA-AES128-GCM-SHA256
    • DHE-RSA-AES256-GCM-SHA384
    • DHE-RSA-AES256-CCM
    • DHE-RSA-AES128-CCM
    • DHE-RSA-CHACHA20-POLY1305

    (WL #15800)

    SQL関数と演算子関連

    • STR_TO_DATE()関数は、変換される文字列に対して完全な範囲チェックを実行しなかったため、「2021-11-31」などの無効な日付を生成する文字列を渡すことができました。 (バグ #108782、バグ #34704094)

      パッケージ関連

      • Windowsでは、MSIパッケージ定義ファイルがWindowsインストーラーXML(WiX)ツールセットのバージョン 4で動作するように更新されました。以前のバージョンのツールセットでは使用できなくなったことに注意してください。 (バグ #35613791)
      • バンドルされているlibeditライブラリがバージョン 20221030-3.1にアップグレードされました。 (バグ #35489173)

        セキュリティ関連

        • システムのcurlライブラリにリンクするのではなく、curlを含むバイナリパッケージが、curl 8.4.0を使用するようにアップグレードされました。curl バージョン 8.4.0で修正された重要な問題については、https://curl.se/docs/security.htmlで説明されています。 (バグ #35897778)
          参考: バグ #35709229も参照してください。

          追加・変更された機能

          • 互換性のない変更: バンドルされているlifido2ライブラリをlifido2 v1.13.0にアップグレードしました。このlibfido2のバージョンにはOpenSSL 1.1.1以降が必要です。つまり、authentication_fido認証プラグインおよびauthentication_fido_client認証プラグインは、Enterprise Linux 6および7、Solaris 11、SLES 12のプラットフォームでは利用できなくなりました。(バグ #35685515)
          • 重要な変更: グループレプリケーション: グループのバージョン要件は、このリリースから次のように緩和されます:
            • バージョン 8.0.35以降の任意のMySQL 8.0リリースを実行しているサーバーは、同じグループに参加できます。
            • 8.0.35より新しいMySQL 8.0リリースを実行しているグループメンバーは、以前のリリースにダウングレードできます。

            この変更は、選択時にプライマリがグループ内に存在する最も低い MySQL バージョンを実行している必要があるという要件には影響しません。これは、これが自動であるか、group_replication_set_as_primary()を実行することによって実行されるかにかかわらず、当てはまります。 (バグ #35397276)

          • 重要な変更: OpenSSLライブラリがバンドルされているプラットフォームの場合、MySQL Server用のリンクされたOpenSSLライブラリがバージョン 3.0.10に更新されました。OpenSSL バージョン 3.0.10で修正された問題については、https://www.openssl.org/news/cl30.txtで説明されています。 (バグ #35702863、バグ #35732474)

          主なバグ修正

          • InnoDB: FTSパーサープラグインによる単一文字トークンの処理を修正しました。
            (バグ #35432973)
          • InnoDB: ALTER TABLE EXCHANGE PARTITIONSステートメントに起因する潜在的なトランザクションロールバックの問題を修正しました。 (バグ #110869、バグ #35352168)
            参考: この問題は、バグ #33700835のリグレッションです。
          • InnoDB: 複数の列にまたがるフルテキストインデックスを作成すると、インデックスの作成が"ERROR 1062 (23000): Duplicate entry 'NULL-NULL'."のようなエラーで失敗することがありました。 (バグ #109242、バグ #33542939、バグ #34846823)
          • InnoDB: エンジンステータスログの最後に検出されたデッドロックセクションには、スレッドとクエリの情報を合わせた1024文字しか表示されませんでした。印刷されるクエリ文字列の制限を削除して修正しました。 (バグ #80927、バグ #23036096)
          • レプリケーション: バイナリログ圧縮で使用されるメモリは計測されていませんでした。 (バグ #35290223)
          • レプリケーション: トランザクション間の依存関係と競合を検出するために、MySQLレプリケーションは、binlog_formatがROWで、transaction_write_set_extractionが有効である(どちらもデフォルト)場合は常に、NOT NULLであるキー(定義上のプライマリキー、および、NOT NULLである一意キーと外部キー) から抽出された書き込みセットを使用します。列値の先頭部分のみを使用する複数列の一意キーの場合、書き込みセットが適切に生成されず、誤った重複キーエラーが発生することがありました。これは、そのような場合に、キー自体が列のプレフィックスのみを参照しているにもかかわらず、参照されたキー列の値全体が書き込みセットに追加されるという事実によるものでした。 (バグ #111027、バグ #35404584)
          • MySQL 8.0.23で行われた変更により、以前はGROUP_CONCAT()がNULLを返していた場合がありましたが、今後はNULLを返さなくなりました。 (バグ #35730982)
            参考: この問題は、バグ #32053547のリグレッションです。
          • クエリのWHERE条件に一致する行がない場合、(PREPAREを使用して)準備されたクエリの結果は、同じクエリを直接実行した場合の結果と異なります。 (バグ #35689804)
          • INTERSECTを使用する一部のクエリは、常に正しく処理されるとは限りませんでした。 (バグ #35504625)
            参考: バグ #35362424。
          • QUOTE()関数が予期したNULLではなくバイナリデータを返す場合がありました。 (バグ #35499232)
          • 以前は、出力パフォーマンスが低く、サーバーのワークロードが高く、audit_log_strategyシステム変数の書き込み戦略がASYNCHRONOUSまたはPERFORMANCEである場合に、audit_log_rotate()を手動で実行すると、関数が応答しないように見えることがありました。 (バグ #35397216)
          • QUOTE()関数は、以前にnull非許容として解決されていたにもかかわらず、NULLを返す場合がありました。 (バグ #35381715)
            参考: バグ #35145246、バグ #35195181。
          • 最初の呼び出し後に正しく実行されなかったストアドプログラムに対するMySQL 8.0.30の以前の修正では、それがSETステートメントを含む場合はカバーされていませんでした。
            (バグ #35328028)
            参考: この問題は、バグ #33754993のリグレッションです。
          • ストアド関数の問題は、列間で値をコピーする際に使用される内部関数を改善するために以前に行われた作業からのリグレッションであることが判明しました。 (バグ #35150382)
            参考: この問題は、バグ #32742537のリグレッションです。
          • 一部のキャッシュされたクエリは、常に正しく処理されるとは限りませんでした。
            (バグ #35105404、バグ #35511208)
          • コマーシャルビルドにバンドルされているKerberosライブラリをバージョン 1.21.2に更新しました。 (バグ #35001935)
          • トリガーを使用したテーブルへの一部のインサートは、常に正しく処理されるとは限りませんでした。 (バグ #34920120)
            参考: バグ #35178672、バグ #35195079。
          • FORMAT = JSONを使用する一部のDESCRIBEステートメントは常に正しく処理されるわけではなく、デバッグビルドでアサーションが発生する場合がありました。 (バグ #34909766)
          • 複数の共通テーブル式を使用する一部の複雑なクエリは、常に正しく処理されるとは限りませんでした。 (バグ #34900334)
            参考: この問題は、バグ #34377854のリグレッションです。
          • ウィンドウ関数を使用した一部のクエリが正しくプッシュダウンされませんでした。 (バグ #34778435)
          • 複数の共通テーブル式を使用する一部の複雑なクエリは、常に正しく処理されるとは限りませんでした。 (バグ #112021、バグ #35284734、バグ #35694546)
            参考: バグ #111994、バグ #35686058も参照してください。この問題は、バグ #34377854のリグレッションです。
          • Enterprise Linuxの場合、krb5-develビルド要件がコマーシャルビルドから全てのビルドに変更されました。 (バグ #111596、バグ #35546449)
          • 孤立したSQLオブジェクトをチェックする時に、CREATE ROLEおよびDROP ROLEステートメントが正しく処理されませんでした。 (バグ #111303、バグ #35471453)
          • Clone_Snapshot::extend_and_flush_files()は常にOS_CLONE_DATA_FILEタイプのファイルを作成します。この関数は、flush_redo()を使用して、REDOログファイルを処理します。REDOログファイルのタイプはOS_CLONE_LOG_FILEである必要があり、os_file_set_size()でエラーが発生する場合があります。
            この問題は、新しいファイルの作成時にタイプが正しく設定されていることを確認することによって修正されています。
            (バグ #110569、バグ #35240055)
          • records_in_rangeは、挿入操作のために過剰な数のディスク読み取りを実行しました。
            (バグ #109595、バグ #34976138)
          • 間違ったインデックスを選択したために、下限ヒューリスティックはORDER BY DESCではうまく機能しませんでした。 (バグ #107626、バグ #34306497)

          全ての変更点やバグ修正については、以下のページをご覧ください。
          MySQL 8.0.35 リリースノート(MySQLウェブサイト):
          https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-35.html


          MySQL Editions

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