使い捨てPostgreSQL環境の作り方のMySQL版です。 Webアプリなどの開発時にローカル環境で用いるMySQLサーバーの簡易な立て方を解説します。

モチベーションやDockerによるソリューションについてはPostgreSQLの記事を参照してください。

素朴なソリューション

ディレクトリを指定してMySQLを起動する

まず、MySQLをbrewとかで入れます。

そして、適当なディレクトリ(ここでは./database)をMySQLのデータディレクトリとして初期化します。

$ mysqld --initialize-insecure --basedir=./database --datadir=./database/data

次に、そのデータディレクトリを使ってmysqldを起動します。

$ mysqld --basedir=./database --datadir=./database/data

そして別のコンソールを立ち上げると、rootユーザーとしてログインできます。 ここではまだパスワードが設定されていないので1-pオプションの代わりに--skip-passwordオプションをつけます。

$ mysql -u root --skip-password
mysql>

そして適当にrootユーザーのパスワードを設定します。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'ここに好きなパスワードを入れる';

ここまでやれば、rootユーザーに先程設定したパスワードでログインできるようになります。

ローカルの開発環境であればrootユーザーでMySQLを使ってもいいんじゃないかと思いますが、もし気になるという人がいたらデータベースとユーザーを適当に作って、それを使って開発すればよいでしょう。

mysql> CREATE DATABASE somedb;
mysql> CREATE USER genya0407 IDENTIFIED BY 'somepassword';
mysql> GRANT ALL ON somedb.* TO genya0407;

あとはこの手順をシェルスクリプトに落とし込めば、コマンド一つでデータベースが立ち上がるようになります。 データベースを止めたいときはmysqldのプロセスをkillすればいいし、データごと消したいときはrm -rf ./databaseすればよいです。

このように、使い捨てMySQL環境を作成することができました。

参考文献

  1. --initialize-insecureオプションでデータディレクトリを初期化したため