セキュリティの脆弱性の修正
CVE / CVSSベーススコア
CVE-2021-2372 / 4.4
CVE-2021-2389 / 5.9
バックポートされた機能
このリリースのMariaDB Enterprise Serverには、MariaDB Enterprise Server 10.6からバックポートされた機能が含まれています。
● MariaDB Enterprise Auditでは、データベース固有およびテーブル固有のフィルターを使用できます。
例:
{
"connect_event" : "ALL",
"table_event" : ["READ","WRITE",{"ignore_tables" : "mysql.*"}],
"query_event" : ["DDL",{"tables" : "test.t2"}]
}
● MariaDB Enterprise Auditは、監査フィルターが無効な場合にサーバーを起動しないように設定できます。
・新しいserver_audit_load_on_errorシステム変数が追加されました。
・監査フィルターが無効な場合にサーバーの起動が失敗するように設定するためには、
server_audit_load_on_errorをOFFに設定し、server-auditをFORCEまたは
FORCE_PLUS_PERMANENTに設定します。
・server_audit_load_on_errorのデフォルト値はONであるため、デフォルトの動作は以前のリリースと
同じです。
● 準同期レプリケーションの一貫性の強化
・rpl_semi_sync_slave_enabled=ONの場合、準同期レプリケーションを使用すると、
HA(プライマリ/レプリカ)トポロジのプライマリサーバーの一貫性が保証されます。
・このリリース以前は、準同期レプリケーションを使用している時、トランザクションをレプリカに
送信する前にプライマリがクラッシュした場合、再起動時にプライマリはレプリカとして再参加すると
不完全なInnoDBトランザクションを回復できました。
・このリリースでは、準同期レプリケーションを使用し、かつrpl_semi_sync_slave_enabled=ONの時、
不完全なトランザクションはレプリカでロールバックされ、新しいプライマリ(以前のレプリカ)と
新しいレプリカ(以前のプライマリ)の同期が維持されます。
● sql_mode=EXTENDED_ALIASESによるSybase SQL Anywhereとの互換性の強化:
・sql_mode=EXTENDED_ALIASESの場合、エイリアスの解決と、SQL SELECTリストとWHERE句での
列エイリアスの使用。
・sql_mode=EXTENDED_ALIASESの場合、エイリアスが定義される前のSELECTリストでのエイリアスの
使用をサポートします。
・sql_mode=EXTENDED_ALIASESの場合、エイリアスと列に同じラベルが使用されていると、
エイリアスが使用されます。
主な変更点
● スクリプトwsrep_sst_mariabackupは、設定ファイルを処理する時に、サーバー関連の全ての
設定グループをチェックします。
・このリリース以前は、設定ファイルの処理時に[mysqld]設定グループのみがチェックされました。
● MariaDB Enterprise Backupは、--stream=mbstreamが付属のmbstreamユーティリティを使用して
バックアップをストリーミングすることを想定しています。
・このリリース以前は、xbstreamユーティリティの名前がmbstreamに変更されていたとしても、
MariaDB Enterprise Backupは--stream=xbstreamを想定していました。
● InnoDBは、デフォルトでアドバイザリファイルロックを取得しなくなりました。
● information_schema.KEYWORDSテーブルが追加され、SQLキーワードの詳細を確認するために
使用できます。
● information_schema.SQL_FUNCTIONSテーブルが追加され、組み込み関数の詳細を確認するために
使用できます。
● file_key_management暗号化プラグインを使用して保存データ暗号化を使用する時、
InnoDBはキーローテーションチェックを自動的に無効にします。
・file_key_management暗号化プラグインはキーローテーションをサポートしていないため、
キーローテーションチェックは必要ありません。
・以前のリリースでは、file_key_management暗号化プラグインを使用した不要な
キーローテーションチェックは、innodb_encryption_rotate_key_age=0を設定することで
明示的に無効にされない限り、パフォーマンスを低下させる可能性がありました。
● type_mysql_jsonプラグインはサポートされていないため、適切な場所に再配置されています。
・バイナリtarballの場合、このプラグインはnot_supportedディレクトリに移動されました。
・Linuxパッケージの場合、このプラグインはnot-supportedリポジトリに移動されました。
● mariadb-binlogの場合、値なしで--base64-outputオプションを指定すると、BINLOGステートメントが
出力に書き込まれなくなります。
・このリリース以降、--base64-outputオプションは値を必要とし、always値は削除されました。
● MariaDB Enterprise Clusterのブラックボックスツールの名前がbbtoolからmariadb-bbtoolに
変更されました。インストールディレクトリがsbinからbinに変更されました。
● InnoDBページのフラッシュパフォーマンスが向上しました。
● inet6プラグインは"stable"成熟度にアップグレードされました。
● S3プラグインは"stable"成熟度にアップグレードされました。
● WolfSSLでコンパイルされたmariadbdバイナリのSSL暗号RC4-MD5およびRC4-SHAを削除しました。
● Galeraが26.4.9に更新されました。
● ARM64は現在複数のプラットフォームでサポートされています。
ストレージエンジンの変更
● このリリースには、MariaDB ColumnStore ストレージエンジン バージョン5.6.2が組み込まれています。
● このリリースには、MariaDB Xpand ストレージエンジン バージョン5.3.17が組み込まれています。
修正された問題
<データ損失が発生する可能性があるもの>
● ALTER TABLE ... ADD COLUMNステートメントがALGORITHM=INSTANTで実行された場合、
操作によってDATE列のデフォルト値が切り捨てられても、警告は発生しません。
<クラッシュまたはハングを引き起こす可能性があるもの>
● マージ可能な派生テーブル/ view / CTE DTを介してWHERE条件を、アイテムリストに定数引数を持つ
SET関数が含まれるグループ化ビュー/ derived table / CTE Vにプッシュすると、サーバーがクラッシュする
可能性があります。
● 対応するクエリがビュー、CTE、または派生テーブルでウィンドウ関数を実行すると、ストアドプロシージャ
またはプリペアドステートメントの2回目の実行時にサーバーがクラッシュします。
● ハンギング再帰CTEを使用してプリペアドステートメントを実行すると、サーバーがクラッシュする
可能性があります。
● プリペアドステートメントまたはストアドプロシージャでCTEを使用してクエリを実行している間に、
サーバーがクラッシュします。
● 間接的に2回使用される再帰CTEを使用してクエリを実行している間に、サーバーがクラッシュします。
● RECURSIVEが欠落している組み込み再帰CTEの処理中に、無限再帰が原因でサーバーがクラッシュします。
● 高負荷下でのInnoDBデッドロックチェッカーでサーバーがクラッシュします。
● 仮想生成された列にプレフィックスインデックスがあると、サーバーがクラッシュします。
● 仮想生成された列を使用すると、サーバーがクラッシュする可能性があります。
● YEAR列が切り捨てられると、DELETEの実行中にサーバーがクラッシュします。
● ホスト名を解決できない場合、SET ROLEの実行中にサーバーがクラッシュします。
● サブクエリがORDER BY句の外部列を参照すると、サーバーがクラッシュします。
● (tableX.colX=tableY.colYのような)異なるテーブルの列を比較する32を超える等式条件で
クエリを実行している時に、クエリオプティマイザでスタックオーバーランが発生するため、
サーバーがクラッシュします。
● ウィンドウ関数がIN(SELECT ..)サブクエリの左の式である場合、サーバーがクラッシュします。
● slave_parallel_mode=optimisticで、OPTIMIZE TABLE、REPAIR TABLE、またはANALYZE TABLEが
実行された時に、GTIDレプリケーションを使用するレプリカサーバーでデッドロックが発生する可能性が
あります。
● InnoDBテーブルでALTER TABLE .. ADD FULLTEXT INDEXが失敗すると、サーバーがクラッシュします。
● フルテキストインデックスを使用してInnoDBテーブルでTRUNCATE TABLEを実行している時に、
サーバーがクラッシュします。
● インデックスが付けられた仮想生成列を持つInnoDBテーブルでALTER TABLEを実行している時に、
サーバーがクラッシュします。
● MariaDB Enterprise Auditがアクティブで、256文字を超えるユーザー名が使用されると、
サーバーがクラッシュします。
● MariaDB Enterprise Auditがアクティブで、監査ログファイルのローテーションがトリガーされると、
サーバーがクラッシュします。
● 少なくとも2回使用され、組み込みの再帰CTEを参照するCTEでクエリを実行している時に、
サーバーがクラッシュします。
● MariaDB Enterprise Clusterの使用時に、並行して適用するプライマリキーのない
複数テーブルに対する変更を持つトランザクションでクラッシュする可能性があります。
● innodb_read_onlyが有効になっていると、CHECK TABLEの実行中にサーバーがクラッシュします。
● DROP TRIGGERを同時に実行している時に、サーバーがクラッシュします。
● 前にLOCK TABLEでテーブルをロックした後、ALTER TABLEの実行中に接続が切断されると、
サーバーがクラッシュします。
● CREATE TABLEを実行して、埋め込まれた二重引用符を含まないCOMMENT値を持つ
Spiderテーブルを作成すると、サーバーがクラッシュします。
● system_versioning_asofシステム変数のグローバル値が、別のグローバルシステム変数の値を
読み取るストアド関数を使用して設定されると、サーバーがクラッシュします。
● シャットダウン中にクライアントが接続すると、サーバーがクラッシュします。
● mariadb-upgradeが実行されると、サーバーがWindowsでハングし、サーバーが停止します。
● 一度に複数の変数を設定するためにSETを実行している時に、サーバーがクラッシュします。
● 必要とされる一時テーブルを作成せずにSPIDER_DIRECT_SQLを呼び出すと、
サーバーがクラッシュします。
● MariaDB Enterprise Backupは、--backupオプションおよび--databases-excludeオプションを
指定して実行すると、クラッシュします。
<予期しない動作を引き起こす可能性があるもの>
● テーブルを削除した後にCREATE OR REPLACE TABLEが失敗した場合、DROP TABLE操作は
バイナリログに書き込まれません。
● SHOW GRANTSステートメントは、DEFAULT ROLEのロール名を適切に引用しません。
● innochecksumユーティリティは、解放されたページのエラーを報告します。
● 再帰CTEのWHERE句で不明な列が参照されていると、クエリはER_BAD_FIELD_ERRORで
失敗するのではなく、成功することがあります。
● 関数内でのCTEの再利用は、ER_NO_SUCH_TABLEエラーコードで失敗します。
● エラーログには以下が含まれる場合があります:"InnoDB: WSREP: referenced FK check fail:
Lock wait index `PRIMARY` table `schema`.`child_table`"
● MariaDB Enterprise Cluster (Galera) SSTスクリプトのいくつかの修正。
● MariaDB Enterprise Clusterでは、wsrep_sst_method=mariabackupの場合、
MariaDB Enterprise BackupはEnvironment systemd設定パラメータによって
設定されたサーバーオプションを継承しません。
● MariaDB Enterprise Clusterでは、wsrep_sst_method=rsyncが設定され、
log-binまたはlog-bin-index、あるいはその両方がカスタムパスに設定されている場合、
rsync SSTはバイナリログインデックスをコピーしません。
この問題の結果として、Joinerノードは次のエラーをMariaDBエラーログに書き込みます。
tail: cannot open 'mysql-bin.index' for reading: No such file or directory
● MariaDB Enterprise Clusterでは、wsrep_sst_method=rsyncが設定されていると、
古いSSTプロセスのrsyncではなく、新しいSSTプロセスのrsyncが強制終了される場合が
あります。
● MariaDB Enterprise Clusterでは、wsrep_debugが有効になっていない場合、WSREPスレッドが
外部キーに関する警告をMariaDBエラーログに書き込む可能性がありました。
・以前のリリースでは、次の警告がログに書き込まれる可能性がありました。
InnoDB: WSREP: referenced FK check fail: Lock wait index `PRIMARY` table
`schema`.`child_table`"`` :org-jira:`MDEV-26062`
・このリリース以降、WSREPスレッドはwsrep_debugが有効になっている場合にのみ外部キーに関する
警告をMariaDBエラーログに書き込みます。
● CREATE INDEXステートメントは、間違った最大列長をチェックする場合があります。
● Spiderストレージエンジンは、複数列のインデックスが使用される場合に、">="を">"として
処理する場合があります。
● max_password_errorsシステム変数は、ed25519認証プラグインでは正しく機能しません。
● "Condition pushdown into derived table"最適化は、プッシュされる式が、格納された関数呼び出し、
@session変数参照、または他の同様の構造を持つ式から計算される派生テーブル列を参照している場合に、
適用できません。
● ORDER BY .. LIMIT句と"Range checked for each record"最適化を使用するクエリは、
誤った結果を生成する可能性がありました。
● 中止されたOPTIMIZE TABLEステートメントは、バイナリログに記録され、
レプリカサーバーに複製されます。
● システムバージョン管理されたテーブルの場合、SHOW INDEXステートメントは、
システムに表示されないrow_end列をプライマリキーの一部として表示します。
● SYSTEM_TIMEでパーティション化されたシステムバージョン管理されたテーブルの場合、
パーティションのオーバーフローがSELECTの正しくない結果につながります。
● Spiderテーブルの場合、CASE WHEN .. THENを使用するSELECTステートメントは、
構文エラーを引き起こす可能性があります。
● Spiderテーブルの場合、WHERE句でJSON_EXTRACT()関数を使用するSELECTステートメントは、
構文エラーを引き起こす可能性があります。
● Spiderテーブルの場合、remove_str(TRIM()など)を使用してネイティブ関数を呼び出す
UPDATEステートメントは、ER_WRONG_PARAMCOUNT_TO_NATIVE_FCTエラーコードで
失敗します。
● Spiderテーブルの場合、サーバー側のプリペアドステートメント(PREPAREによって作成され、
EXECUTEによって実行される)は、符号なし整数リテラルを誤って符号付き整数に変換します。
● Spiderテーブルの場合、JSON_REPLACE()関数を使用するステートメントは、
ER_SP_DOES_NOT_EXISTエラーコードで失敗します。
● MariaDB Enterprise Auditでは、CREATE PROCEDUREステートメントと
DROP PROCEDUREステートメントは監査ログに記録されません。
● MariaDB Enterprise Backupでは、バックアップ中にxtrabackup_binlog_infoファイルに書き込まれる
バイナリログの位置がレプリケーションに対して正しくありません。
● MariaDB Enterprise Clusterでは、wsrep_sst_method=mariabackupの場合、
SSTスクリプトのタイプミスがドナーノードでのSST障害を引き起こします。
● Spiderテーブルの場合、DISTINCTを使用するSELECTステートメントが正しく機能しない場合が
あります。
● mariadbdがWolfSSLでコンパイルされている場合、サーバーはTLS 1.3およびAES-GCM暗号を使用した
接続の受け入れに失敗します。
● 同時CREATE TRIGGERステートメントが間違った順序でバイナリログに書き込まれ、
レプリケーションが中断する可能性があります。
● INSERT .. RETURNINGステートメントがバッチモードで実行される場合
(コネクターがCOM_STMT_BULK_EXECUTEオプションを設定する場合など)、
間違った値が挿入される可能性があります。
● INSERT .. RETURNINGステートメントの場合、修飾されたアスタリスク(table_name.*など)は
RETURNING句ではサポートされていません。
● ロック読み取りステートメント(UPDATEまたはSELECT ... FOR UPDATE)に、定数の内部テーブルとの
外部結合が含まれている場合、警告がMariaDBエラーログに書き込まれます。
警告の例:
[ERROR] InnoDB: Unlock row could not find a 3 mode lock on the record.
インターフェースの変更
● ER_BLACKBOX_ERRORエラーコードのエラー番号が4174から6000に変更されました
● KEYWORDSインフォメーションスキーマテーブルが追加されました
● mariadbd --server-audit-load-on-errorコマンドラインオプションが追加されました
● server_audit_load_on_errorシステム変数が追加されました
● SQL_FUNCTIONSインフォメーションスキーマテーブルが追加されました
● system_versioning_asofシステム変数のデフォルト値がDEFAULTから""(空)に変更されました
プラットフォーム
エンタープライズライフサイクルに合わせて、MariaDB Enterprise Server 10.5.12-8は以下に対して提供されています。
・CentOS 7 (x86_64)
・CentOS 8 (x86_64 / ARM64)
・Debian 9 (x86_64 / ARM64)
・Debian 10 (x86_64 / ARM64)
・Red Hat Enterprise Linux 7 (x86_64)
・Red Hat Enterprise Linux 8 (x86_64 / ARM64)
・SUSE Linux Enterprise Server 12 (x86_64)
・SUSE Linux Enterprise Server 15 (x86_64 / ARM64)
・Ubuntu 18.04 (x86_64 / ARM64)
・Ubuntu 20.04 (x86_64 / ARM64)
・Microsoft Windows (x86_64)
MariaDB Enterprise Server 10.5.12-8のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/release-notes/mariadb-enterprise-server-10-5-12-8/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。