新しいプログラム言語やフレームワークを学ぶ時、適当なサンプルデータが入ったMySQLデータベースが欲しくなる場合があります。
今回は、このような時のためにvagrantを利用して下記の構成のvmをコマンド1つで構築できるようなvagrantの設定ファイル(Vagrantfile)を用意しました。
- AmazonLinux
- MySQL 5.7
- MySQLのsakilaサンプルデータベース
vagrantがインストールされたPCで'vagrant up'するだけで、sakilaサンプルデータベースが入ったMySQLサーバを構築するための設定ファイルです。
設定ファイル
下記のファイルを'Vagrantfile'のファイル名で保存します。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "mvbcoding/awslinux"
config.vm.network "private_network", ip: "192.168.33.20"
# config.vm.box_check_update = false
# config.vm.network "forwarded_port", guest: 80, host: 8080
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# config.vm.network "public_network"
# config.vm.synced_folder "../data", "/vagrant_data"
config.vm.provision "shell", inline: <<-SHELL
# install and activate mysql server.
yum install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm -y
yum install mysql-community-server -y
service mysqld start
chkconfig mysqld on
# change mysql password policy
sudo sh -c 'echo validate-password=OFF >> /etc/my.cnf'
service mysqld restart
# change root's initial password.
DB_PASSWORD_ORG=$(grep "A temporary password is generated" /var/log/mysqld.log | sed -s 's/.*root@localhost: //')
DB_PASSWORD='root'
mysql -uroot -p${DB_PASSWORD_ORG} --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${DB_PASSWORD}'; flush privileges;"
# download sakila database definition.
wget -q http://downloads.mysql.com/docs/sakila-db.tar.gz
tar -zxvf sakila-db.tar.gz
# create sakila database.
mysql -u root -p${DB_PASSWORD} -e "source sakila-db/sakila-schema.sql"
mysql -u root -p${DB_PASSWORD} -e "source sakila-db/sakila-data.sql"
# create sakila user.
mysql -u root -p${DB_PASSWORD} -e "CREATE USER sakila@'%' IDENTIFIED BY 'sakila';"
mysql -u root -p${DB_PASSWORD} -e "GRANT ALL PRIVILEGES ON *.* TO sakila@'%';"
mysql -u root -p${DB_PASSWORD} -e "FLUSH PRIVILEGES;" -p${DB_PASSWORD}
# check settings.
mysql -u root -p${DB_PASSWORD} -e "SELECT host, user FROM mysql.user;"
mysql -u root -p${DB_PASSWORD} -e "show grants for sakila@'%';"
mysql -u sakila -psakila -D sakila -e "show tables;"
SHELL
end
ファイルを保存したらVagrantfileのファイルがあるディレクトリで、vagrant up
コマンドを実行すればDBサーバの構築が完了します。
vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'mvbcoding/awslinux'...
==> default: Matching MAC address for NAT networking...
...
DBへの接続
vagrant up
コマンドによるVMの作成が完了したら、下記のコマンドでホストOSからMySQLへ接続可能です。
IPアドレスやパスワードを変更したい場合は、先ほどのVagrantfileを編集してください。
mysql -u sakila -h 192.168.33.20 -psakila
作成したVMの再起動/削除
Vagrantで作成したvmを再起動したい場合は下記のコマンドを、ホストOSから実行します。
# vmの停止
vagrant halt
# vmが停止したか確認
vagrant status
# vmの起動
vagrant up
vm自体を削除したい場合は、下記のコマンドを実行します。
# vmの削除
vagrant destroy
こちらもおススメ