OSSデータベース取り取り時報

第32回 MySQL 8.0マイナーバージョン変更,PostgreSQL 10.3リリース

この記事を読むのに必要な時間:およそ 3.5 分

MySQLは8.0のマイナーバージョンをサーバーとクライアントツール群で揃えるため,いくつかのマイナーバージョンがスキップされることが発表されました。PostgreSQLはPostgreSQL 10.3がリリースされました。

[MySQL]2018年3月の主な出来事

2018年3月には,高可用性構成用のパッケージMySQL InnoDB Clusterを構成するソフトウェアルータであるMySQL Routerの2.1.5がリリースされました。新機能の追加はありませんが,タイムアウト値が正しく設定できないバグなどが修正されています。

本連載第31回の締切後の2月27日には,X Dev APIをサポートしたMySQL Connector/C++ 8.0.7 RCがリリースされました。このバージョンではテーブルやビューに対するDDLに該当するX Dev APIのメソッドが削除され,SQL文での操作に変更されています。このMySQL Connector/C++ 8.0.7 RCのリリースによって,MySQL 8.0向けのConnectorのリリース候補版が出そろったことになります。

MySQL 8.0のマイナーバージョンに関するお知らせ

MySQLリリースエンジニアリングチームのブログにて,次のMySQLサーバーのマイナーバージョン番号は8.0.11である旨が発表されました。これはMySQLサーバーやクライアントのバージョン番号を揃えるためとされています。2018年3月末時点でMySQLサーバーの最新版は8.0.4 RCですが,MySQL Connector/Netは8.0.10 RCが最新となっています。このためMySQL 8.0.5から8.0.10まではリリースされずにスキップされることとなりました。あわせて各ConnectorやMySQL Router, Shell, Workbenchなど各クライアントツール群も同様にバージョン番号となる予定です。

MySQL 8.0へのバージョンアップ前の確認

MySQL Shellには新たにバージョンアップを支援するための関数 util.checkForServerUpgrade() が追加されています。下記はMySQL 5.7に対してこの関数を実行した結果です。

MySQL  localhost:3310 ssl  JS > util.checkForServerUpgrade();
The MySQL server at localhost:3310 will now be checked for compatibility issues for upgrade to MySQL 8.0...
MySQL version: 5.7.22-log - MySQL Community Server (GPL)

1) Usage of db objects with names conflicting with reserved keywords in 8.0
  Warning: The following objects have names that conflict with reserved keywords that are new to 8.0. Ensure queries sent by your applications use `quotes` when referring to them or they will result in errors.

  test.t2.admin - Column name

2) Usage of utf8mb3 charset
  Warning: The following objects use the utf8mb3 character set. It is recommended to convert them to use utf8mb4 instead, for improved Unicode support.

  test.t_utf8mb3.var - column's default character set: utf8

3) Usage of use ZEROFILL/display length type attributes
  No issues found

4) Issues reported by 'check table x for upgrade' command
  No issues found

5) Table names in the mysql schema conflicting with new tables in 8.0
  No issues found

6) Usage of old temporal type
  No issues found

7) Foreign key constraint names longer than 64 characters
  No issues found

No fatal errors were found that would prevent a MySQL 8 upgrade, but some potential issues were detected. Please ensure that the reported issues are not significant before upgrading.
1

この例ではt2テーブルの列名がMySQL 8.0からの予約語となったadminとなっている点や,別のテーブルではutf8mb3を使用している点などが指摘されています。ここでは戻り値が1なので,⁠致命的な問題はないものの潜在的な問題あり」となります。たとえば予約語については`(バッククォート)で囲めば問題とはなりません。utf8mb3も引き続き利用できますが,MySQL 8.0でのUnicode関連の改良を活用するにはutf8mb4への変換が推奨されています。

関数の実行結果は,何も問題が無ければ戻り値は0, バージョンアップに支障がある場合は2となります。バージョンアップ前に問題となりえる点を抽出できる便利な関数となっています。MySQLサーバー開発チームのブログでもこの関数についてご紹介しています。

[PostgreSQL]2018年3月の主な出来事

PostgreSQLは2018年3月1日にアップデートが実施され,バージョンはそれぞれ10.3,9.6.8,9.5.12,9.4.17,9.3.22となりました。このリリースは主にCVE-2018-1058の脆弱性への対応を目的としたリリースですが,この脆弱性は単に最新版にアップデートするだけでは解消できないのでご注意ください。

脆弱性を解消するには利用環境に合わせて以下のガイドに従った対応が必要となります。

CVE-2018-1058の仕組み

PostgreSQLではデータベースを作成するとデフォルトでpublicというスキーマが作成されます。

このスキーマはデフォルトですべてユーザに対して開放されており,あるユーザがpublicスキーマに作成したオブジェクト(関数も含まれる)を別のユーザが利用することも出来ます。

また,PostgreSQLは同名関数が存在する場合に,引数型がより近い関数を優先するという仕組みがあり,システムカタログに用意されている関数をユーザ関数で置き換えることもできます。

たとえば,システムカタログ上に存在しているlower(text)に対して,publicスキーマにlower(varchar)というユーザ関数を作成すると,引数がvarcharだった場合はユーザ関数が優先されます。

この仕組みを利用すれば悪意のあるユーザがpublicスキーマ上にこっそりトロイの木馬となる不正なユーザ関数を作成し,それを他のユーザに実行させるという攻撃が成立します。また,その時の権限は攻撃者の権限ではなく,実行したユーザの権限となるため,より高い権限を持つユーザが実行すれば攻撃者の権限を上回る被害を与えることも可能です。

CVE-2018-1058とは,publicスキーマを悪用することで,悪意のあるユーザが作成したトロイの木馬を他のユーザに実行させることができてしまうという脆弱性です。

CVE-2018-1058の対応方法

これまでの脆弱性対応版リリースと異なり,今回はアップデートするだけではこの問題は解消できません。

前述のガイドでは以下の方法を案内しておりますが,いずれも,PostgreSQLの利用方法によっては障害を引き起こす可能性がありますので,環境に合わせた適切なものを選択する必要があります。

なお,スーパーユーザ権限で実行することが多い一部のプログラムについては,このアップデートを適応するだけでsearch_pathからpublicスキーマが取り除かれます。対象については,リリースノート「Avoid use of insecure search_path settings in pg_dump and other client programs (Noah Misch, Tom Lane)」を確認してください。ここで挙げられたプログラムはアップデートするだけでトロイの木馬から守られますが,search_pathにpublicスキーマが含まれていることを前提とする利用を行っている場合,正しく動作しなくなるのでご注意ください。

2018年4月開催予定のセミナーやイベント,ユーザ会の活動

初心者向け!MySQL 5.7入門 バックアップ編,レプリケーション編

日程 2017年4月2日(月)
場所 日本オラクル株式会社 本社
東京都港区北青山2-5-8
内容 MySQL 5.7の初心者向けセミナーを開催します。今回のセミナーでは,MySQLのバックアップ運用時に考慮すべき点や,障害発生時のシステム復旧時間を短くするポイント,バックアップ手法ごとのメリット/デメリット等を解説します。また,MySQLで非常に人気の高いレプリケーション機能について,メリットや仕組み,設定方法,注意事項等を解説します。
これからMySQLを触る方や,今までMySQLに触れているけどMySQLについてきちんと勉強したことが無い,といった方は,ぜひご参加ください。
主催 日本オラクル MySQL GBU

MySQL 5.7入門 セキュリティ基礎編

日程 2017年4月9日(月)
場所 日本オラクル株式会社 本社
東京都港区北青山2-5-8
内容 MySQL 5.7の入門セミナーを開催します。今回のセミナーでは,MySQLのセキュリティ対策機能としてどのような機能があり,どのような脅威に対して対策できるのかや,気を付けておいた方がいい設定等について,全般的に解説します。
ユーザー認証や権限管理だけでなく,データ暗号化,監査ログ取得,不正なSQLの検知/ブロックなど,さまざまなMySQLのセキュリティ対策機能について解説させて頂きます。
今までMySQLに触れているけどMySQLのセキュリティ対策機能についてきちんと勉強したことが無い,といった方は,ぜひご参加ください。
主催 日本オラクル MySQL GBU

情報とITを活用した働き方改革セミナー(3都市開催)

日程 ⁠名古屋】2018年4月 6日(金)
⁠東京】2018年4月10日(火)
⁠大阪】2018年4月12日(木)
場所 ⁠名古屋】日本オラクル株式会社 中日本支社 東海オフィス
⁠東京】日本ヒューレット・パッカード株式会社 本社
⁠大阪】日本ヒューレット・パッカード株式会社 西日本支社
内容 労働環境の改善は企業にとって大きな課題であり,多様な働き方をサポートするITの導入を進めている企業も多く見受けられます。 日本ヒューレット・パッカード株式会社,ウイングアーク1st株式会社が取り組んでいる働き方改革と,MotionBoardを使用した働き方改革の事例,そしてMotionBoard ,MySQL,HPE製品を合わせたソリューションによって,安心して進められる情報の可視化とは何かについて,検証結果とベストプラクティスをご紹介致します。
主催 日本ヒューレット・パッカード株式会社
共催 ウイングアーク1st株式会社,日本オラクル株式会社

「MySQL InnoDB Cluster入門」セミナー in 大阪

日程 2018年4月12日(木)⁠ 13:30-16:30
場所 日本オラクル株式会社 関西支社
大阪市北区堂島2-4-27 新藤田ビル 9F
内容 MySQL標準の高可用性構成として登場したMySQL InnoDB Clusterについて,アーキテクチャや利用方法をご紹介いたします。
主催 日本オラクル MySQL GBU

「MySQL InnoDB Cluster入門」セミナー in 名古屋

日程 2018年4月13日(金)⁠ 13:30-16:30
場所 日本オラクル株式会社 東海支社
愛知県名古屋市中区栄3-18-1 ナディアパークビジネスセンタービル 10F
内容 MySQL標準の高可用性構成として登場したMySQL InnoDB Clusterについて,アーキテクチャや利用方法をご紹介いたします。
主催 日本オラクル MySQL GBU

著者プロフィール

山本文彦(やまもとふみひこ)

TIS株式会社

アプリ兼インフラエンジニアとしてさまざまなECサイトの開発現場を担当後,現在はOSSサポートサービスにおいて技術コンサルティングや保守サポートに従事。PostgreSQLだけでなく,MySQL, OracleなどのRDB,Amazon DynamoDBといったNoSQLなどさまざまなDB製品の利用経験を活かして,OSS製品の普及活動に力を注いでいる。


梶山隆輔

MySQL Sales Consulting Senior Manager。

日本オラクル(株)において,MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なMySQL部門にて,オーストラリア,インド,台湾などに在籍するチームメンバーを束ね,アジア太平洋地域の25以上の国や地域でのMySQL普及やビジネスの拡大をミッションとする。

コメント

コメントの記入