MySQLに Spatial(GIS)関数を大量に追加するプロジェクトをやっています。現在、標準のMySQLが持つSpatial関数に加え、新たに60個以上の関数を使用できるところまで進めて参りました。
https://github.com/sakaik/mysql-spatial-plugin/tree/main
みなさんにぜひ動作を試してもらいたいのですが、動作環境作るのとか大変そうな気がして尻込みしちゃうんですよね。 実際は soファイル置いて INSTALL PLUGIN コマンドを叩くだけなので実質 2ステップなのですが、なかなかみなさん試してくださいません。
(実は動作環境が非常に狭かった= glibcのバージョンが Ubuntu 24.04 など一部のOSのみに対応していた = ので、今回新たに他ののglibcバージョンのプラグインも作成しました)
そこで、みなさんに手軽に試してもらうために、
このたび Dockerで手軽にこのプラグインを動作させる手順を整理したので、公開します。
前提条件
- Docker がインストール済みであり実行可能な状態になっていること
- 同マシン上にMySQLが既に動作中でないこと(動作中の場合は docker-composeファイルの設定を変えればいいだけなので大きな問題ではないです)
設定&実行手順
MySQL dockerプラグイン動作環境用意
- 作業フォルダの作成
mkdir -p ~/work/mysqlplugin cd !$
docker-composeファイルの作成
- docker-compose.yaml(パスワードはよしなに)
services:
db:
image: mysql:9.6
environment:
MYSQL_ROOT_PASSWORD: mypass
MYSQL_DATABASE: mydb
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
- ./spatial_plugin-glibc-2.34.so:/usr/lib64/mysql/plugin/spatial_plugin.so
volumes:
db_data:
pluginを取得
このプラグインが、本プロジェクトで開発している、「60個以上のGIS関数をMySQLに!」のプラグインです。
wget https://github.com/sakaik/mysql-spatial-plugin/releases/download/v0.2.0/spatial_plugin-glibc-2.34.so
dockerでMySQLサーバを起動
docker compose up
MySQLサーバにmysqlクライアントを使って接続
サーバは立ち上がりっぱなしなので別の窓を開けて作業
docker compose exec db mysql -u root -pmypass mydb
.
- 接続時の例
$ docker compose exec db mysql -u root -pmypass mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 9.6.0 MySQL Community Server - GPL Copyright (c) 2000, 2026, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
プラグインのインストール
INSTALL PLUGIN spatial_plugin SONAME 'spatial_plugin.so';
→これでもう MySQL Spatial Function Plugin が使えるようになりました!!
動作確認の例
mysql> SELECT STX_Perimeter(ST_GeomFromText('POLYGON((35 135, 35 136, 36 136, 36 135, 35 135))', 6668)) pm;
+--------------------+
| pm |
+--------------------+
| 403352.30562388065 |
+--------------------+
1 row in set (0.049 sec)60個以上の追加Spatial関数が、もうあなたの手元に届きました。「バグ報告ドリブン開発(BRDD)」ですので、おかしな挙動があったらぜひ報告をお願いします。
.
まとめると
- 作業フォルダにdocker-composeファイル作って
- MySQL Spatial Functions Plugin の soファイルを取ってきて
- docker compose up でサーバ立ち上げて
- docker compose execで mysqlクライアントを使ってサーバに接続して
- INSTALL PLUGIN するだけ!
