ビルドするほどに時間はかからず、rpmで入れるよりは自由度が高い(自分のローカルでの動作、複数バージョンの動作)ということで、Generic binariesを使って、とにかく最短でMySQL 5.7 の2つのバージョンを入れてみます。
環境はいつもの t2.micro です。
今回からは、(デフォルトではディスク10GBだけど30GBまでは無料お試し枠に入っているということで)ディスクを30GBにしました。
10GBだと、MySQL 5.7 をダウンロード&展開(=インストール)のセット3つめで満杯になります。ちょっと窮屈。
スクリプトの作成と実行
つべこべ言わず、以下の内容を記述したファイルを作成します。名前は inst5717 とか。
作成したら、実行権限を与えて実行します。
次に(別窓とかで) inst5717 をコピーして inst5716 を作成し、ファイル中の MVER=17 の数字部分を 16 に変更して実行します。
実行後は、それぞれのディレクトリに移動して、mysqlクライアントプログラムを使って接続確認&パスワードの変更をします。
#!/usr/bin/bash MVER=17 sudo yum -y install wget libaio-devel sudo yum -y remove mariadb-libs cd ~ mkdir -p mysql/ cd mysql wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.${MVER}-linux-glibc2.5-x86_64.tar.gz tar xvf mysql-5.7.${MVER}-linux-glibc2.5-x86_64.tar.gz mv mysql-5.7.${MVER}-linux-glibc2.5-x86_64 mysql57${MVER} cd mysql57${MVER} #echo ------------------------------------ #echo Please push ENTER key to continue. #read cat <<EOF > my.cnf [mysqld] log-error=/home/ec2-user/mysql/mysql57${MVER}/my.err basedir = /home/ec2-user/mysql/mysql57${MVER} datadir = /home/ec2-user/mysql/mysql57${MVER}/data port=157${MVER} socket=/tmp/mysql57${MVER}.sock character-set-server=utf8mb4 [mysqladmin] socket=/tmp/mysql57${MVER}.sock [mysql] port=157${MVER} socket=/tmp/mysql57${MVER}.sock default-character-set=utf8mb4 EOF bin/mysqld --defaults-file=./my.cnf --initialize bin/mysql_ssl_rsa_setup --defaults-file=./my.cnf bin/mysqld_safe & sleep 3 grep 'temporary password' my.err echo To connect: ./bin/mysql --defaults-file=./my.cnf -uroot -p echo Change password: ALTER USER root@localhost IDENTIFIED BY \'mypass\';
注意点やその他情報など
- 当然ながら、ダウンロード提供されていないバージョンのファイルはダウンロードできませんので、適宜 MVER=17 の部分は最新状態に変更してお使いください。概ね、最新から3つのマイナーバージョンのダウンロードが提供されています。
- スクリプト実行後は、インストールしたフォルダではなく実行時のフォルダに戻ってしまうので、クライアントからの接続確認の際には自分でcdする必要があります
- この方法で、概ね3分程度で、MySQL実行までたどり着きます。ほとんどが tar を展開している時間です。
#5.6や 8.0のスクリプトも欲しいね。
●2017お年始のMySQL関連日記書き殴り一覧:
追記:MySQL 5.6 用スクリプト
まぁここまで来たら作りますよね、当然。
データベースファイル群作成の方法が異なるのと、それに伴い、Perl系のプログラムやライブラリを入れておく必要がある点が異なります。処理時間は70秒程度でした。
あとは、やっていない事と言えば
- 5.6と 5.7、ひとつのスクリプトになったらいいなぁ
- ファイルのwgetについて、存在しない場合は検知してちゃんとエラー出して止まるといいなぁ
- 処理終了後に、そのまま(インストール後の)フォルダに居てくれたらいいなぁ
というあたりでしょうか。
誰かやりませんか。
#!/usr/bin/bash MVER=35 sudo yum -y install wget libaio-devel perl perl-Data-Dumper sudo yum -y remove mariadb-libs cd ~ mkdir -p mysql/ cd mysql wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.${MVER}-linux-glibc2.5-x86_64.tar.gz tar xvf mysql-5.6.${MVER}-linux-glibc2.5-x86_64.tar.gz mv mysql-5.6.${MVER}-linux-glibc2.5-x86_64 mysql56${MVER} cd mysql56${MVER} #echo ------------------------------------ #echo Please push ENTER key to continue. #read cat <<EOF > my.cnf [mysqld] log-error=/home/ec2-user/mysql/mysql56${MVER}/my.err basedir = /home/ec2-user/mysql/mysql56${MVER} datadir = /home/ec2-user/mysql/mysql56${MVER}/data port=156${MVER} socket=/tmp/mysql56${MVER}.sock character-set-server=utf8mb4 [mysqladmin] socket=/tmp/mysql56${MVER}.sock [mysql] port=156${MVER} socket=/tmp/mysql56${MVER}.sock default-character-set=utf8mb4 EOF scripts/mysql_install_db --datadir=./data bin/mysqld_safe & sleep 3 echo To connect: ./bin/mysql --defaults-file=./my.cnf -uroot