デモ:
AWS上Red Hat に
MySQL動作環境を
さくっと作っちゃう
MySQLサーバの動作
• mysqld と呼ばれるプロググラムが、ずっと動
き続けているだけ
mysqld
(プログラム)
Port 3306
Socket file
MySQLサーバの動作
• mysqld と呼ばれるプロググラムが、ずっと動
き続けているだけ
mysqld
(プログラム)
Port 3306
クライアント
MySQL のインストール
• Windows のインストーラー (msi)
• Windows の “MySQL Installer”
• MacOSのインストーラー(dmg)
• Linux 系のリポジトリ(yum, apt など)
• Linux 系のパッケージ(rpm, debなど)
• バイナリを配置
MySQLのインストール:バイナリを配置
■考え方
• バイナリの入ったアーカイブを落としてきて
• 展開して
• 起動する
MySQLのインストール:バイナリを配置
■実際
• 既に入っている MariaDBを除去して
• 必要なライブラリをインストールして
• バイナリの入ったアーカイブを落としてきて
• 展開して
• 実行パラメタを書いたファイル(my.cnf)を作って
• データファイルを初期化して
• 起動する(上で作ったmy.cnfファイルを指定)
MySQLのインストール:バイナリを配置
■コマンドとか
• MariaDB除去
• 必要なライブラリをインストール
• バイナリの入ったアーカイブを取得
• 展開
$ sudo yum -y remove mariadb-libs
$ sudo yum -y install wget libaio-devel
$ 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}
MySQLのインストール:バイナリを配置
■コマンドとか
• 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
MySQLのインストール:バイナリを配置
■コマンドとか
• データファイルの初期化
• 起動
• 接続
$ bin/mysqld --defaults-file=./my.cnf --initialize
$ bin/mysql_ssl_rsa_setup --defaults-file=./my.cnf
$ bin/mysqld_safe &
$ ./bin/mysql --defaults-file=./my.cnf -uroot -p
MySQLのインストール:バイナリを配置
■全部まとめると
[!/usr/bin/bash
MVER=1
sudo yum -y install wget libaio-devel
sudo yum -y remove mariadb-libs
cd ~
wget http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-8.0/mysql-
8.0.${MVER}-dmr-linux-glibc2.12-x86_64.tar.gz
mkdir -p mysql/
cd mysql
tar xvf ../mysql-8.0.${MVER}-dmr-linux-glibc2.12-x86_64.tar.gz
mv mysql-8.0.${MVER}-dmr-linux-glibc2.12-x86_64 mysql80${MVER}
cd mysql80${MVER}
#echo ------------------------------------
#echo Please push ENTER key to continue.
#read
cat <<EOF > my.cnf
[mysqld]
log-error=/home/ec2-user/mysql/mysql80${MVER}/my.err
basedir = /home/ec2-user/mysql/mysql80${MVER}
datadir = /home/ec2-user/mysql/mysql80${MVER}/data
port=180${MVER}
socket=/tmp/mysql80${MVER}.sock
character-set-server=utf8mb4
[mysqladmin]
socket=/tmp/mysql80${MVER}.sock
[mysql]
port=180${MVER}
socket=/tmp/mysql80${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';
やって
みよう
おまけ:MySQL 8.0.1 の場合の例
#!/usr/bin/bash
MVER=1
sudo yum -y install wget libaio-devel
sudo yum -y remove mariadb-libs
cd ~
wget http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-8.0/mysql-
8.0.${MVER}-dmr-linux-glibc2.12-x86_64.tar.gz
mkdir -p mysql/
cd mysql
tar xvf ../mysql-8.0.${MVER}-dmr-linux-glibc2.12-x86_64.tar.gz
mv mysql-8.0.${MVER}-dmr-linux-glibc2.12-x86_64 mysql80${MVER}
cd mysql80${MVER}
#echo ------------------------------------
#echo Please push ENTER key to continue.
#read
cat <<EOF > my.cnf
[mysqld]
log-error=/home/ec2-user/mysql/mysql80${MVER}/my.err
basedir = /home/ec2-user/mysql/mysql80${MVER}
datadir = /home/ec2-user/mysql/mysql80${MVER}/data
port=180${MVER}
socket=/tmp/mysql80${MVER}.sock
character-set-server=utf8mb4
[mysqladmin]
socket=/tmp/mysql80${MVER}.sock
[mysql]
port=180${MVER}
socket=/tmp/mysql80${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';

AWSのRedHatにMySQL最速インストール