セキュリティの脆弱性の修正
CVE / CVSSベーススコア
CVE-2021-2154 / 4.9
CVE-2021-2166 / 4.9
主な変更点
・新しい関数 ST_DISTANCE_SPHERE()は、球上の2つのジオメトリ(ポイントまたはマルチポイント)間の
球形距離を計算します。
・列レベルとテーブルレベルのCHECK制約を区別するために、新しいフィールド LEVELがテーブル
INFORMATION_SCHEMA.CHECK_CONSTRAINTSに存在します。
・innodb_checksum_algorithmの値であるnone、innodb、strict_none、strict_innodbに対して
非推奨警告を発行します。
・役に立たないカウンターを削除する Innodb_buffered_aio_submitted
・MariaDB Enterprise Clusterは、ストリーミングレプリケーションで不要なロールバックを回避します。
・改善されたTLS/SSLエラーレポート。
・Galeraが26.4.8に更新されました
ストレージエンジンの変更
・このリリースには、MariaDB Xpand ストレージエンジン バージョン 5.3.16が組み込まれています。
・このリリースには、MariaDB ColumnStore ストレージエンジン バージョン 5.6.1が組み込まれています。
修正された問題
<データ損失が発生する可能性があるもの>
・ALTER TABLEは、InnoDBテーブルの列の名前変更に失敗し、サーバーをクラッシュさせます。
再起動後、InnoDBテーブルにアクセスできなくなります。
・外部キーを使用したInnoDBテーブルでのALTER後のテーブル破損 ER_NO_SUCH_TABLE_IN_ENGINE
またはER_CRASHED_ON_USAGE。
・MariaDB Enterprise Backupは、デバイスにスペースが残っていないというエラーの後、終了する前に、
現在のソースファイルを削除します。不完全なターゲットファイルのみが引き続き使用可能です。
・ROW_FORMAT=REDUNDANTを使用したInnoDBのオンラインのALTER TABLEでの破損の可能性
・RESET MASTER中にサーバーを強制終了すると、MyRocksトランザクションが失われる可能性があります。
・暗号化されたトランザクションAriaテーブルは、クラッシュリカバリ後も破損したままであり、自動修復は
機能しません。
・DELETE HISTORYは、システムバージョン管理されたテーブルの現在のデータを削除する場合があります。
・InnoDBリカバリは、[ERROR] InnoDB: Not applying INSERT_REUSE_REDUNDANT due to corruption
if innodb_change_bufferingがnoneとは異なる値に設定されていると、失敗する可能性があります。
・InnoDBは、[ERROR] InnoDB: Flagged corruption of `..` in table ... in CHECK TABLE; Wrong count
if innodb_change_bufferingがnone以外の値に設定されていると報告する可能性があります。
<クラッシュまたはハングを引き起こす可能性があるもの>
・KILL CONNECTIONまたはKILL QUERYがMariaDB Enterprise Clusterとマルチマスターセットアップで
使用されるとハングする可能性があります。
・4096バイトを超える値を可変長フィールド(BLOB、TEXT、VARCHAR、および関連するタイプ)に
挿入すると、MariaDB Enterprise Clusterでメモリが破損する可能性があります。
・innodb_flush_method=O_DIRECTは圧縮テーブルで失敗します。
・userstatを有効にして関数を呼び出すと、check_grantでサーバーがクラッシュします。
・--default-character-setが設定されていて、かつ、--character-sets-dirが未定義の場合、
MariaDBクライアントがクラッシュします。
・テーブルを削除するとサーバーがクラッシュする可能性があります。テーブルごとにテーブルスペースを
使用している場合、および、削除時にテーブルスペースのサイズが増加した場合にのみ、見られます。
・仮想列に対するUPDATE、INSERT、REPLACEのエラーが発生した後、InnoDBおよび
インデックス付き仮想列でサーバーがハングする可能性があります。
・MariaDB Enterprise Clusterの競合解決の問題。
・FULLTEXT INDEXの中止によるインデックスカウントの不一致
・MariaDB Enterprise Clusterノードは、仮想列を含み、プライマリキーを持たないテーブルに行を
挿入するとクラッシュします。
・InnoDBが新しい仮想列に新しいインデックスを追加できず、同時接続が解放された仮想列にアクセスする
クエリを実行すると、サーバーがクラッシュします。
・ON式の相関関係を持つEXISTSサブクエリがクラッシュします。
・読み取り専用トランザクションのロールバック時に、row_undo_mod_clust_lowでサーバーが
クラッシュします。
・ストアドプロシージャが無効なマルチテーブルUPDATEステートメントを使用してビューを更新すると、
ストアドプロシージャの2回目の実行時にサーバーがクラッシュします。
・mysql.innodb_index_statsシステムテーブルまたはmysql.innodb_table_statsシステムテーブルに
回復されたトランザクションが存在し、DDLトランザクションがロールバックされる必要がある場合、
InnoDBの起動がハングします。
・InnoDBがFULLTEXT INDEXを含むテーブルからデータをフェッチしようとした時にサーバーが
クラッシュし、テーブルのテーブルスペースが破棄されました。
・WHERE条件が派生テーブルを参照すると、SHOW TABLESでサーバーがクラッシュします。
・仮想インデックス付き列が存在する場合、InnoDBパージでハングする可能性があります。
・ON条件に存在しないフィールドを含むCREATE VIEW .. SELECTでのクラッシュ。
・ネストされたテーブル値コンストラクターでのクラッシュ。
・VALUES()関数またはVALUE()関数で作成されたテーブル値で集約関数が呼び出されると、サーバーが
クラッシュします。
・SELECTステートメントにVALUES()関数またはVALUE()関数で作成されたテーブル値を参照する
サブクエリがあると、サーバーがクラッシュします。
・SELECTステートメントにVALUES()関数またはVALUE()関数で作成された2つのテーブル値のUNIONを
参照するIN()句があると、サーバーがクラッシュします。
・log_slave_updatesが無効になっていて、かつ、競合するトランザクションが優先度の高い
トランザクションで中止されると、MariaDB Enterprise Cluster上のマルチマスターワークロードでの
アサーションが原因でサーバーがクラッシュします。
・ALTER TABLEステートメントが実行され、wsrep_osu_methodがNBOに設定され、sql_modeが空の
文字列('')に設定されると、サーバーがクラッシュします。
・KILL CONNECTIONまたはKILL QUERYがMariaDB Enterprise Clusterおよびマルチマスターセットアップ
で使用されると、ハングする可能性があります。
・MariaDB Enterprise Clusterでストリーミングレプリケーションが使用されると、メモリが破損する
可能性があります。
・mysql.userシステムテーブルが切り捨てられると、MariaDB Enterprise Clusterノードがクラッシュします。
・wsrep_provider_optionsがNULLに設定されると、MariaDB Enterprise Clusterノードがクラッシュします。
・全順序分離(TOI)がGaleraに使用され、ALTER TABLEが不明なエンジンを使用してENGINE=で
実行されると、MariaDB Enterprise Clusterがクラッシュする可能性があります。
sql_mode=''(エンジン置換なし)でのみ発生します。
・トランザクションのコミット中にテーブル定義がキャッシュから削除された場合、メモリの破損または
クラッシュする可能性があります。
・--prepare中にMariaDB Enterprise Backupがクラッシュします。
・DEFAULT()関数がBLOB列で呼び出されると、サーバーがクラッシュします。
・SELECTステートメントがインフォメーションスキーマテーブルにクエリを実行し、JOINを使用すると、
サーバーがクラッシュします。
・information_schema.innodb_sys_columnsからのSELECT後、
optimize_schema_tables_memory_usageでサーバーがクラッシュします。
・DROP TABLE、TRUNCATE、または、ALTER TABLEがInnoDBテーブルで実行され、
innodb_change_bufferingがnone以外の値に設定されている場合、サーバーがクラッシュします。
・FULLTEXT INDEXがInnoDBテーブルに追加され、そのテーブルのテーブルスペースが以前に
破棄された場合、サーバーがクラッシュします。
・列がINSTANTアルゴリズムを使用してInnoDBテーブルから削除されると、サーバーがクラッシュします。
・CREATE TABLE t1 ( .. ) SELECT .. FROM t2が実行されると、MariaDB Enterprise Clusterノードが
クラッシュします。ここで、t1はInnoDBテーブルであり、t2は非InnoDBテーブルです。
・RESET MASTERが実行されると、InnoDBチェックポイント中にサーバーがハングします。
・MariaDB Enterprise Clusterの競合解決の問題。
・wsrep_onが有効になっている時にストリーミングレプリケーションを使用してコミットされていない
トランザクションがレプリケートされ、wsrep_onが無効になっている時にそのトランザクションが
コミットされると、MariaDB Enterprise Clusterノードがクラッシュします。
・innodb.innodb_buffer_pool_resize_temporary中のシャットダウンのクラッシュ
・オプティマイザーがサブクエリからGROUP BYを誤って削除すると、サーバーがクラッシュします。
これは、列がSELECTリストとGROUPBYリストの両方で指定されているためです。
・非InnoDBテーブルがLOCK TABLEステートメントでロックされ、同時接続が同じテーブルを参照する
CREATE VIEWを実行すると、サーバーがMariaDB Enterprise Clusterでクラッシュします。
・セカンダリインデックスでインスタントInnoDB ALTERに失敗した後、サーバーがクラッシュする
可能性があります。
・SELECTステートメントのFROM句にGROUPBY句を含むサブクエリがあり、複数のインデックスが
使用されている場合、サーバーがクラッシュします。1つのインデックスはGROUP BY句の解決に使用され、
別のインデックスはLATERALDERIVED最適化に使用されます。
・thd_clear_errors()でのサーバーのクラッシュ
・複数のテーブルを使用したOPTIMIZE TABLEの後で、MariaDB Enterprise Clusterがクラッシュします。
wsrep_osu_method=NBOの場合にのみ、見られます。
・MariaDB Enterprise Backupは、Windowsでパラメータなしで呼び出されると、クラッシュします。
・InnoDBがインデックス付き仮想列をパージする必要がある場合、サーバーは早期シャットダウンで
ハングします。
<予期しない動作を引き起こす可能性があるもの>
・CAST('0e1111111111' AS DECIMAL(38,0))は誤った結果を返します。
・プリペアドステートメントとして実行された時のSET STATEMENTの誤った動作。
・サブクエリに外部列を参照するON句を含むJOINが含まれている場合、クエリは
ER_BAD_FIELD_ERRORエラーを返します。
・共通テーブル式(CTE)にUNIONが含まれている場合、クエリはER_BAD_FIELD_ERRORエラーを
返します。
・MIN()またはMAX()の集約関数が使用され、集約された列にインデックスが付けられている場合、クエリは
誤った結果を返します。
・インクリメンタルブロックのネストされたループハッシュでの間違った結果(余分な行と間違った値)。
・複合インデックスを使用したブロックネストループハッシュ(BLNH)の最適化を使用してJOINが
評価されると、クエリが誤った結果を返します。
・サーバーは、mysqld_safeオプションを指定したmysqld_multiの使用を開始できません。
・MariaDB Enterprise Clusterの設定変更中に、重複キーが生成される場合があります。
・--log-binオプションがサーバーの起動時に値無しでコマンドラインで設定されると、
MariaDB Enterprise Backupを使用したMariaDB Enterprise Clusterの
状態スナップショット転送(SST)が失敗します。
・永続統計とRENAME TABLEまたはTRUNCATEの間の競合状態
・ANALYZE TABLEとSTATS_AUTO_RECALCの間の競合状態
・CHECK TABLEがInnoDBテーブルで実行されると、フィールド長に関する誤ったメッセージがエラーログに
書き込まれます。
・派生テーブルのSUM列が無効な値を返します。
・オプティマイザが不明なテーブルエイリアスを含むサブクエリの冗長部分を削除しても、エラーは
返されません。例えば、オプティマイザがIN()サブクエリから冗長なGROUP BY句を削除した場合、
冗長部分の不明なテーブルエイリアスは無視されます。
・フィールド"filter"のEXPLAINで示される選択性は、BIT列では正しくありません。
・ヒストグラム統計は、optimizer_use_condition_selectivity=3でも使用されます。
・EXPLAINは、type=indexでkey_lenの無意味な値を示します。
・サーバーの証明書とクライアントの証明書が同じCAによって署名されている場合、SSL接続は失敗します。
・ST_GeomFromGeoJSONの呼び出し時のエラーメッセージの関数名が間違っています。
・MariaDB Enterprise Backupは、大規模バックアップで-prepareに失敗します。
・バックアップユーザーのパスワードがMYSQL_PWD環境変数を介して設定されている場合、
MariaDB Enterprise Backupを使用したMariaDB Enterprise Clusterの
状態スナップショット転送(SST)は失敗します。
・--innodbオプションがサーバーの起動時にコマンドラインで設定されると、MariaDB Enterprise Backupを
使用したMariaDB Enterprise Clusterの状態スナップショット転送(SST)が失敗します。
・EXPLAIN EXTENDEDステートメントがプリペアドステートメントで実行されると、必要以上の警告が
返されます。
・ストアドプロシージャの複雑なクエリは、間違った結果を返します。
・AFTERが使用されている場合、ALTER TABLEはフィールドのデフォルト値を誤って確認します。
・ON式のサブクエリの名前解決が正しくありません。
・FLUSH LOGSが実行されると、InnoDBグループコミットとバイナリログローテーションの間の競合状態に
より、古いバイナリログファイルはInnoDBグループコミットが書き込まれる前に使われなくなります。
・MariaDB Enterprise Backupは、--backup中に無効なログブロックチェックサムを読み取ると、
警告ではなくエラーをログに記録します。
・マルチバージョン同時実行制御(MVCC)を使用してInnoDBインデックスが読み取られると、行が誤って
省略されます。
・仮想列のあるテーブルへのREPLACEが失敗した後、SELECTが中止されます。
・インデックスの不一致が発生すると、InnoDBはインデックスタイプのフェッチに失敗します。
・MariaDB Enterprise Clusterは、InnoDBモニター出力をサイレントに有効にし、wsrepスレーブスレッドが
ブルートフォース(BF)キルを実行しようとした時にそれを無効にすることはありませんが、
ロック待機時間が長いため失敗します。
・MariaDB EnterpriseBackupの場合、RENAME TABLEにより、"Ignoring data file ... with space ID xxxx,
since the redo log references ... with space ID xxxx."が発生します。
・レプリケーションハートビートバイナリログイベント(Heartbeat_log_event)は、現在の
バイナリログファイル内のログの位置を格納するために4バイトを使用します。そのため、
バイナリログファイルのサイズが4GBを超えるとログの位置がオーバーフローします。
・InnoDB空間インデックスは、大きなジオメトリフィールドを見逃します。
・前のステートメントのテーブルエイリアスは、後のコマンドに干渉します。
・プライマリテーブルがVALUES()関数またはVALUE()関数で作成されたテーブル値である場合、
EXPLAINステートメントはサブクエリに関する詳細を表示しません。
・split_materialized最適化が有効になっている場合、マテリアライズされた派生テーブルのJOINは
誤った結果を返します。
・CREATE .. SELECT ... VALUEの初期化されていない値と様々なエンジンで発生する様々なエラー。
・サーバーは、INFORMATION_SCHEMA.OPTIMIZER_TRACEテーブルが問い合わせされる度に、
一時的に4GBの余分なメモリを消費します。
・ALTER TABLE .. IMPORT TABLESPACEはDROP INDEXの後に失敗します。
・システムバージョン管理されたテーブルからプライマリキー列を削除すると、常にエラー1072で失敗します。
・ALTER TABLE .. ADD COLUMN .. AS ROW STARTは、誤解を招く
ER_VERS_DUPLICATE_ROW_START_ENDエラーを返します。
・ALTER TABLEはMariaDB Enterprise Clusterで複製されません。
・sql_safe_updatesを設定すると、MariaDB Enterprise Clusterを使用する時に予期しない警告が発生する
可能性があります。
・SET PASSWORDステートメントは、そのステートメントがプリペアドステートメントで実行され、
ユーザーのパスワードの有効期限が切れている場合、ER_MUST_CHANGE_PASSWORDで失敗します。
・MariaDB Enterprise Cluster FlushSSLコマンドはwsrep証明書をリロードしません。
・システムバージョン管理されたテーブルからプライマリキー列が削除された時に、
予期しないER_DUP_ENTRYエラーが発生しました。
・mariadb-dumpを使用したMariaDB Enterprise Clusterの状態スナップショット転送(SST)により、
ドナーノードのシャットダウンが失敗します。
・10.5.9にアップグレードすると、rootユーザーのGRANT機能が壊れます。
・SHOW ENGINE INNODB STATUSは、以前に削除されたI/O統計に対して0を示します。
・slave_compressed_protocolは、半同期レプリケーションでは正しく機能しません。
・ある接続によって作成されたシーケンスは、別の接続からは見えないままです。
・innodb_adaptive_flushing_lwmを超えると、InnoDBアダプティブフラッシュが開始できません。
・information_schema.routinesのroutine_definitionは、_で始まり、バックティックされていない場合、
テーブル名を失います。
・DROP TABLE parent_table、child_tableがプライマリサーバーで実行され、foreign_key_checksが
有効になっている場合、レプリカサーバーはER_ROW_IS_REFERENCED_2で失敗します。
・MariaDB Enterprise Spiderは、スパイダーテーブルの作成時に、
The connect info 'tab' for table is too longを返します。
・garbdには接続の問題があります。
・Galera起動ログは、設定ファイルを介してサーバー監査ログを有効にすると、
mysql.server_audit_filtersデータロードエラーを示します。
・集約関数を使用した派生テーブルのJOINは、誤った結果を返します。
<インストールまたはアップグレードに関連するもの>
・SLES 12およびSLES 15へのlibsepolの依存関係がありません。
インターフェースの変更
・CHECK_CONSTRAINTSインフォメーションスキーマテーブルスキーマは、LEVEL列を追加します。
・mariadb-backup --innodb-force-recoveryコマンドラインオプションが追加されました。
・mariadb_repo_setup --skip-check-installedコマンドラインオプションが追加されました。
・ST_DISTANCE_SPHERE関数が追加されました。
プラットフォーム
エンタープライズライフサイクルに合わせて、MariaDB Enterprise Server 10.5.10-7は
以下に対して提供されています。
・CentOS 7
・CentOS 8
・Debian 9
・Debian 10
・Red Hat Enterprise Linux 7
・Red Hat Enterprise Linux 8
・SUSE Linux Enterprise Server 12
・SUSE Linux Enterprise Server 15
・Ubuntu 18.04
・Ubuntu 20.04
・Microsoft Windows
MariaDB Enterprise Server 10.5.10-7のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/release-notes/mariadb-enterprise-server-10-5-10-7/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。