目的
・LattePanda(Windows10)にMySQLServerを構築し量産したい
↓
・量産工数を少しでも減らすために、各デバイスでの環境構築はなるべく自動化したい
↓
・MySQLをバッチで一発インストールできるようにしたい (可能なら同時にDBも構築したい)
前置き
上記の方法を調べても日本語での情報は皆無。
スタックオーバーフロー等で英語圏にそれっぽいQAがあるが、記述されているサンプルではどれも上手くいかないものばかり。
かなりレアケースだと思いますが、試行錯誤したら実現できたので共有します。
方法
- MySQL公式より必要なバージョンのインストーラーをダウンロードしておく。(当方ver8.0.17)
- バッチファイルを作成。(以下動作確認済みサンプルコード)
→適宜バージョンやパスを変更
mysql_installer.bat
# MySQLバージョン 8.0.17
# ※管理者として実行
#「mysql-installer-community-8.0.17.0.msi」と「dumpファイル」を事前にCドライブ直下に配置
# passwdやFilePathは適宜変数化
# 構築環境に合わせてオプションを変更する
@echo off
echo Installing MySQL Server. Please wait...
msiexec /i "C:\mysql-installer-community-8.0.17.0.msi" /qn /norestart
echo Configurating MySQL Server...
"C:\Program Files (x86)\MySQL\MySQL Installer for Windows\MySQLInstallerConsole.exe" community install server;8.0.17;x64:*:type=config;openfirewall=true;generallog=true;binlog=true;serverid=3306;enable_tcpip=true;port=3306;rootpasswd=PASS; -silent
echo MySQL has been installed successfully!
# 環境変数にPathを追加
setx PATH "C:\Program Files\MySQL\MySQL Server 8.0\bin"
echo Restoring database ...
mysql -u root -pPASS -e "CREATE DATABASE `DBNAME` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"
mysql -u root -pPASS DBNAME --binary-mode < "C:\dump_file.sql"
echo Database has been restored successfully!
pause
- 1で取得したインストーラーとdumpファイルを任意の位置(サンプルはCドライブ直下)に配置
- バッチファイルを管理者として実行
流れ
- 「msiexec /i」 にてインストーラーを実行
- 「"C:\Program Files (x86)\MySQL\MySQL Installer for Windows\MySQLInstallerConsole.exe" community install」 でMysqlServerインストール
- 「setx PATH」 で環境変数にmysqlのpathを追加
- 「mysql -u root -pPASS -e」 にて事前にDBを作成
- 「mysql -u root -pPASS DBNAME --binary-mode <」 にてリストア(4で作成したDBを記述)
最後に
肝となるのは「MySQLInstallerConsole.exe」です。
こちらにリファレンスがあるので、環境に応じてオプションなどを変更してください。
上記コマンド実行時に 「community」がないと商用版がインストールされ、無料では使えないと思われます。
スタックオーバーフローの海外QAにはconfigほにゃららを使ったやり方が散見されますが、どれも上手くいきませんでした。
なんとか成功したやり方なので、他に良いやり方があれば是非ご教授ください。