MySQL 9.2.0より前のバージョンでは、空間参照系(spatial reference systems: SRS)の作成や変更はSUPER権限を持つユーザーだけに許されていました。しかしこの状況は不便であり、特にSUPER権限を持てないケースが多いマネージドサービス、HeatWave MySQLでは特に顕著でした。MySQL 9.2.0では、この問題を解消するために新しい動的権限であるCREATE_SPATIAL_REFERENCE_SYSTEMが導入され、SUPER権限を必要とせずに、カスタムSRSの作成・置換・削除ができるようになりました。空間参照系は空間データを扱う上で非常に重要な概念であり、以前のブログ記事(英語)でも説明したように、空間データがどのように解釈されるかを定義します。

この記事では、この新しい権限の使い方を解説し、実際の使用例を示します。新しい権限は MySQL Community Edition、Enterprise Edition および HeatWave MySQL で有効です。

なぜこの権限が重要なのか

この新しいCREATE_SPATIAL_REFERENCE_SYSTEM権限によって、ユーザーは以下が可能になります:

  1. SUPER権限なしで、自分のデータニーズに合ったカスタムSRSを定義できる
  2. プロジェクト要件の変化に合わせて既存のSRSを簡単に変更できる
  3. SUPER権限が制限されるHeatWave MySQLでも、空間データを円滑に管理できる

CREATE_SPATIAL_REFERENCE_SYSTEM権限の使い方

ここでは新しいSRSを作成する例を用いて、この権限の使用方法を説明します。

Step 1 – 権限の付与: まずは、管理者がCREATE_SPATIAL_REFERENCE_SYSTEM権限をユーザーに付与します。例として、Bobという名前のユーザー (ホストはlocalhost) に権限を付与します。

GRANT CREATE_SPATIAL_REFERENCE_SYSTEM ON *.* TO 'Bob'@'localhost';

This command gives Bob the permission to create and manage a custom SRS in the database without requiring SUPER privileges.

Step 2 – カスタムSRSの作成: 必要な権限を得たBobは、新しいSRSを作成できます。たとえば、GRS 1980楕円体をに準拠した横メルカトル図法 (Transverse Mercator) を、SRIDを33000として定義したいとします。以下のコマンドは、その作成例です。

CREATE SPATIAL REFERENCE SYSTEM 33000
NAME 'MAGNA-SIRGAS 2018'
ORGANIZATION 'EPSG'
IDENTIFIED BY 33000
DEFINITION 'PROJCS["MAGNA-SIRGAS 2018 / Origen-Nacional",GEOGCS["MAGNA-SIRGAS 2018",DATUM["Marco_Geocentrico_Nacional_de_Referencia_2018",SPHEROID["GRS 1980",6378137,298.257222101],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","20046"]],PROJECTION["Transverse_Mercator",AUTHORITY["EPSG","9807"]],PARAMETER["latitude_of_origin",4],PARAMETER["central_meridian",-73],PARAMETER["scale_factor",0.9992],PARAMETER["false_easting",5000000],PARAMETER["false_northing",2000000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","33000"]]';

このコマンドにより、SRID 33000を持つ新しい空間参照系「MAGNA-SIRGAS 2018」が作成されます。これは、EPSG規格に含まれる、コロンビアの特定地域に適した座標系の定義です。続いて、作成されたSRSを確認するには以下のようなクエリを実行します。

SELECT * FROM INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS where SRS_ID=33000;

CREATE_SPATIAL_REFERENCE_SYSTEM 権限を持つことで、SRSの置換や削除も行えます。カスタムSRSの詳細な作成方法については、以前のブログ記事(英語)もご覧ください。

エラーハンドリング

必要な権限を持たないユーザーがSRSを作成や変更しようとすると、以下のように、SUPERまたはCREATE_SPATIAL_REFERENCE_SYSTEMの権限が必要であることを示すエラーメッセージが返されます。

ERROR HY000: Command requires either SUPER or CREATE_SPATIAL_REFERENCE_SYSTEM privilege.

このように、従来SUPER権限が必要だったSRSの操作は、今後はCREATE_SPATIAL_REFERENCE_SYSTEM権限で行うことが推奨されます。

まとめ

MySQLに新たに追加されたCREATE_SPATIAL_REFERENCE_SYSTEM権限は、空間データ管理の柔軟性を高め、過剰なSUPER権限への依存をなくします。これにより、ユーザーは安全にカスタムSRSを作成・置換・削除できるようになり、特にSUPER権限を持てないHeatWave MySQLで大いに役立ちます。空間データの構成をより細かく制御できるようになることで、正確な地理座標系や投影座標系を必要とするアプリケーションのサポートが強化され、空間データの取り扱いがさらに便利になります。新しい権限はMySQL Community Edition、Enterprise Edition、およびHeatWave MySQLで利用可能です。