2017/07/15
日本MySQLユーザ会
坂井 恵
オープンソースカンファレンス2017-Hokkaido
【入門】
このセッションは
• MySQLを学んでいく上での「インストール」の
重要性を説く、入門向けセッションです
• MySQLの最新情報(バージョン5.7 や 8.0)な
どの話を聞きたい方は、ぜひブースのほうに
もお越しください。
Who am I?
• 坂井 恵 (さかいけい)
– @sakaik
– 日本MySQLユーザ会 副代表
– 最近は「趣味のMySQLユーザー」
– 千葉県から来ました
今日のテーマ
『インストールを極める者が
その技術をモノにする』
おしながき
1.MySQLについて
2.MySQLを学ぶということ
3.MySQLのインストール方法
4.MySQL手動でのインストール
1.MySQL
MySQLについて
基本情報の
整理
MySQL
• データベース管理システム
(データベースソフト)
• オープンソース
ライセンスは、GPLと商用ライセンスから選択可能
• Since 1995. 本格的な普及は 2001年の ver. 3.23
「世界でもっとも普及しているオープンソース
データベース」(主催者発表)
最近の MySQL バージョンの変遷
5.7
5.6
5.1
5.0
6.0
5.55.4(2005) (2010)
(2013)
(2015)
(2008)
8.0
(2018?)
どのバージョンを選ぶか
①既存の案件で、バージョンが指定されている
場合は、そのバージョン
②比較的すぐに新規の案件で使うなら、5.7
③将来を見越して最先端の情報を追うなら 8.0
このバージョンを選ぶ!
5.7
5.6
5.1
5.0
6.0
5.55.4(2005) (2010)
(2013)
(2015)
(2008)
8.0
(2018?)
2.MySQLを学ぶということ
技術スキルを
習得するときに
もっとも大切なものは
何だろうか
MySQLを学ぶとは
1.試す
2.試す
3.
4.
5. 試す
その他
• 調べる
• 考える
MySQL技術の習得のために必要なこと
MySQLを学ぶとは
とにかくドンドン「試す」ことが
もっとも大切な要素
(MySQLに限らず、多くの技術習得に言えること)
そんなこと、分かってるって!
MySQLを学ぶとは
• 「試す」ことが大切なのは、分かっている
•では、なぜ試さない?
– なんとなく億劫
– 試す環境を作るのがたいへん
「試す環境を作るのがたいへん」
それなら、まず、
たいへんでなくなる
力を手に入れよう
極意:
つまりインストールを極める!
今日のキーワードです
× 「知り尽くす」
○ 「あなた自身が、もっともラクできる
インストール方法を見つける」
おすすめ学習ステップ
1. とにかく一番ラクな方法でインストール
2. そこそこ満足するまで気ままにいじり倒す
3. アンインストールする
4. 何種類かのインストール方法を試して、自分
なりのインストール/アンインストールテク
ニックを手に入れる
5. 気ままにいじり倒す
6. 気ままにいじり倒す(以下続く)
今日のキーワード
『インストールに自信を持つことが
MySQLなどの
技術を習得するための
大きな2歩目だ。 』
-- sakaik, 2017
3.MySQLインストール方法
いろいろな
インストール方法を
知る
MySQLのインストール方法あれこれ
① Windows の “MySQL Installer”
Windows のインストーラー (msi)
②MacOSのパッケージ(dmg)
③Linux 系のリポジトリ(yum, apt など)
④Linux 系のパッケージ(rpm, debなど)
⑤バイナリを配置(手動インストール)
⑥ソースコードからビルド
MySQLのダウンロード
何をダウンロードしたいか、知っておく
ポイントは3つ
1.OSは?
2.インストール方法は?
3.32bit /64bit?
MySQLダウンロードページ
GAバージョンと開発バージョン
ダウンロード:OSの選択
おすすめ学習ステップ
1. とにかく一番ラクな方法でインストール
2. そこそこ満足するまで気ままにいじり倒す
3. アンインストールする
4. 何種類かのインストール方法を試して、自分なりのインストール/アン
インストールテクニックを手に入れる
5. 気ままにいじり倒す
6. 気ままにいじり倒す(以下続く)
【再掲】
最初のインストール
• もっとも楽な方法でさくっと入れよう
Windows: MySQL Installer
Mac OS X: dmg
Linux系: リポジトリから
簡単インストール:Linuxリポジトリ
(MySQLダウンロードページ)
おすすめ学習ステップ
1. とにかく一番ラクな方法でインストール
2. そこそこ満足するまで気ままにいじり倒す
3. アンインストールする
4. 何種類かのインストール方法を試して、自分
なりのインストール/アンインストールテク
ニックを手に入れる
5. 気ままにいじり倒す
6. 気ままにいじり倒す(以下続く)
【再掲】
極めるインストール
ぜひ手動インストールを!
MySQL動作への理解が深まる
活用の幅が広がる
一台の上に複数のMySQLとか
※きちんと理解すれば、難しくはありません!
(バイナリ・アーカイブを落としてきてインストール)
4.MySQL手動インストール
バイナリ・アーカイブを
落としてきて
MySQLが動作する
環境を作る
バイナリ配置での動作
MySQL動作のしくみ
• 接続や指示を待ち受けているプログラムがあ
る(サーバー)
• そこにクライアントが接続しに行く
mysqld
(プログラム)
TCP Port 3306
Socket file
クライアント
これだけ!
mysqlクライアント
mysqlクライアント(拡大)
MySQL動作のしくみ
• 接続や指示を待ち受けているプログラムがあ
る(サーバー)
• そこにクライアントが接続しに行く
mysqld
(プログラム)
TCP Port 3306
Socket file
(mysqlコマンドラインクライアントからの接続)
MySQL動作のしくみ
• 接続や指示を待ち受けているプログラムがあ
る(サーバー)
• そこにクライアントが接続しに行く
mysqld
(プログラム)
TCP Port 3306
Socket file
開発プログラム
クライアント
ライブラリ
(接続ライブラリ)
(各種開発プログラムからの接続)
MySQLのインストール:バイナリを配置
■考え方
• バイナリの入ったアーカイブを落としてきて
• mysqld を 起動する
• mysql クライアントコマンドで接続する
MySQLのインストール:バイナリを配置
■考え方
• バイナリの入ったアーカイブを落としてきて
• mysqld を 起動する
• mysql クライアントコマンドで接続する
事前準備: MySQLが動作する環境を整えて
ファイルを展開して
必要なパラメタを指定して起動
必要なパラメタを指定して接続
毎回の起動のたびに「必要なパラメタ」を全部指定するのは面倒なので、
my.cnf という設定ファイルに記述しておくとラク。
最初にデータファイルの初期化
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例
• 使用できるLinux環境(ここではAWS上のRed Hat
を例に)を用意する。
• 競合するソフトウェア(MariaDB)が入っている
ので除去する
• 必要なライブラリをインストールする
①動作環境の用意
$ sudo yum remove mariadb-libs
$ sudo yum install wget libaio-devel
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例
• MySQLのダウンロードページから、適切なファ
イルをダウンロードし、展開する
見るポイント
 OS
 32bit か 64bit か
 ファイルのタイプ(拡張子など): パッケージシステムのファイルでないもの
②バイナリの入ったアーカイブを落としてきて
$ wget https://dev.mysql.com/get/Downloads/MySQL-
5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
$ tar xvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
$ mv mysql-5.7.18-linux-glibc2.5-x86_64 mysql5718
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例
• MySQLのダウンロードページから、適切なファ
イルをダウンロードし、展開する
見るポイント
 OS
 32bit か 64bit か
 ファイルのタイプ(拡張子など): パッケージシステムのファイルでないもの
②バイナリの入ったアーカイブを落としてきて
$ wget https://dev.mysql.com/get/Downloads/MySQL-
5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
$ tar xvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
$ mv mysql-5.7.18-linux-glibc2.5-x86_64 mysql5718
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例
mysqld(サーバ)起動時に、動作内容を指示す
るためのパラメタを指定する
 接続待ちするポート
 接続に使用するソケットファイル(Linuxのローカル接続
ではこれを使う)
 標準で使用する文字コード
 各種ファイル配置のパス
③mysqldを起動・・・・の前に、パラメタについて
$ bin/mysqld --port=3306 --socket=/tmp/mysql5718.sock --character-
set-server=utf8mb4 --datadir=/home/my/mysql/mysql5718/data …
毎回の起動のたびに「必
要なパラメタ」を全部指定
するのは面倒なので、
my.cnf という設定ファイル
に記述しておくとラク。
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例
my.cnf記述例
③mysqldを起動:のために my.cnfを記述
[mysqld]
log-error=/home/ec2-user/mysql/mysql5718/my.err
basedir = /home/ec2-user/mysql/mysql5718
datadir = /home/ec2-user/mysql/mysql5718/data
port=15718
socket=/tmp/mysql5718.sock
character-set-server=utf8mb4
[mysqladmin]
socket=/tmp/mysql5718.sock
[mysql]
port=15718
socket=/tmp/mysql5718.sock
default-character-set=utf8mb4
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例
• mysqldを “--initialize” オプションをつけて実行
すると、データファイル群が作成される
• ついでに ssl の初期化もしておくとよい
③-2 データファイルの初期化
$ bin/mysqld --defaults-file=./my.cnf --initialize
$ bin/mysql_ssl_rsa_setup --defaults-file=./my.cnf
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例
• mysqld_safe を使って mysqldサーバを起動
(作成したmy.cnf が、カレントフォルダに存在する前提)
③-3 mysqldサーバ起動
$ bin/mysqld_safe &
※ mysqld_safe は、色々と良きに計らって
mysqld を起動してくれるスクリプト
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例
作成した my.cnf ファイルを指定して、mysql クラ
イアントコマンドを実行
④ mysqlクライアントから接続と最初の設定
$ ./bin/mysql --defaults-file=./my.cnf -uroot -p
initializeの時に、初期パスワードが my.err に書き込まれるので
あらかじめ確認しておく
2017-05-24T05:07:08.020775Z 4 [Note] A temporary password is generated for root@localhost: rtrqCApwZ8?k
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例
• インストール直後に作成されているユーザの「初期パスワー
ド」を変更する必要がある
• 変更するまで、なんの操作もできない
• 変更には ALTER USER 文を使用する
④-2 パスワード設定
mysql> ALTER USER root@localhost IDENTIFIED BY 'mypass';
#!/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のバイナリでのインストール
Linux(AWSのRed Hat)の例
おまけ: MySQL 8.0.1 オレオレセットアップスクリプトの例
MySQLのインストール:バイナリを配置
■考え方
• バイナリの入ったアーカイブを落としてきて
• mysqld を 起動する
• mysql クライアントコマンドで接続する
事前準備: MySQLが動作する環境を整えて
ファイルを展開して
必要なパラメタを指定して起動
必要なパラメタを指定して接続
毎回の起動のたびに「必要なパラメタ」を全部指定するのは面倒なので、
my.cnf という設定ファイルに記述しておくとラク。
最初にデータファイルの初期化
【再掲】
今日のキーワード
『インストールに自信を持つことが
MySQLなどの
技術を習得するための
大きな2歩目だ。 』
-- sakaik, 2017
極意(再掲)
つまりインストールを極める!
今日のキーワードです
× 「知り尽くす」
○ 「あなた自身が、もっともラクできる
インストール方法を見つける」
インストールと
アンインストールを
自在に操って、
どんどんMySQLを
試しちゃいましょう!
- Fin -
展示ブースのご案内
オラクル・MySQLチーム さんと
日本MySQLユーザ会のブースが
それぞれあります(斜め向かい)
オラクル・MySQLチームさんの
ニュー・ノベルティ
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~

OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~