とりあえずざっくりな忘備録。開発環境からつないでみるだけです。
MySQL Serverを自分の作業マシンや仮想マシンに入れるのはイマイチな気がしたので、せっかくなのでDockerで作ることにします。
手順自体は普通に MySQL Server をインストールする場合と基本的には同じです。
必要なもの
- Delphi/C++Builder/RAD Studio Enterprise
- libmysql.dll(MySQLのWindowsクライアント)
- Docker MySQLコンテナ
- FireDAC での接続定義の作成
準備
Delphi/C++Builder/RAD Studio Enterprise
買いましょう。
libmysql.dll(MySQLのWindowsクライアント)
libmysql.dll は MySQL Connecotr/C に含まれるので、これを開発環境に一旦インストールする。
https://dev.mysql.com/downloads/connector/c/
ただし単体インストーラは存在しないので、MySQL Installer でインストールします。
MySQL Connecotr/C はインストールの途中で明示的に追加します。
インストールしたら、パスが通っているフォルダか、またはDelphiのIDEのパスにコピーします。
Docker MySQLコンテナ
Delphi 10.2 では MySQL は Version 5.7 までの対応っぽい。 ここに対応データベースバージョンが書かれている。
そこで Docker MySQL コンテナイメージも 5.7 のものを選んで入手することにします。
公式のイメージは https://hub.docker.com/r/mysql/mysql-server/ に情報がありまして、これを見ると 5.7 は次のようにインストールできそうです。
docker run \ --name mysql57 \ -e MYSQL_ROOT_PASSWORD=secret \ -p 3306:3306 \ -d mysql/mysql-server:5.7
ただしこの手順で起動しても、MySQL への接続は localhost からしか行えません。そこで一旦こんなふうに実行して、root ユーザがすべてのデータベースに対して任意のノードから接続できるようにしてみます。
$ docker exec -it mysql57 mysql -uroot -p mysql> grant all privileges on *.* to root@'%' identified by 'secret';
実際の運用環境では、当然ながら、こんなざっくりとした設定をしてはダメです。
FireDACでの接続定義の作成
TFDConnectionで、最低限、こんな感じで設定すれば接続できるはずです。黄色でハイライトされている箇所を実際の環境にあわせて設定します。
設定を作ったら「テスト」を実行して設定が正しいことを確認します。
接続できたら、あとはTFDQueryなどでクエリ実行するなりして利用できます。
うまく接続できない場合は、MySQL Workbench や mysql コマンド等で接続できるかどうかを確かめるとよいでしょう。
ちなみに最初は MySQL 8 のコンテナを立てたのですが、MySQL Workbench からは正常に接続でき、FireDAC から接続するとエラーが出たので、サポートバージョンで明記されている 5.7 のコンテナを作り直しました。とはいえ、docker run するだけなので、手間なく動かせるのは大変ありがたいです。実インストールしていたら、アンインストールするとか、スナップショットに戻すとかの作業が必要になるわけですし。