これからデータベースMySQLを始める人のために
2017/05/27
日本MySQLユーザ会
坂井恵
オープンソースカンファレンス2017-Nyagoya
【入門】【飲食可】
このセッションは
• ランチタイムセッションです
• お持ちのおひるごはん(お餅以外も含む)を食べながら気楽にお聞きください
• ただし、においの強いものは、うらやましくなります
このセッションは
• 『これからデータベースMySQLを始める人のために』という、入門向けセッションです
• 時間に余裕があれば、MySQL最新情報や、MySQLの小ネタなどを紹介します
MySQLを学ぶとは
• 試す
• 試す
• 試す
• 考える
• 試す
• 試す
• 調べる
• 試す
• 試す
• 試す
• 試す
• 調べる
• 考える
• 試す
MySQL習得のために必要なこと
MySQLを学ぶとは
• とにかく試す!試す!試す(MySQLに限らず、多くの技術習得に言えること)
• なぜ試さない?– なんとなく億劫
– 試す環境を作るのがたいへん
「試す環境を作るのがたいへん」
なら、まず、
たいへんじゃなくなる力を手に入れることに力を割きましょう
極意:
つまりインストールを極める!
今日のキーワードです
× 「知り尽くす」
○ 「あなた自身が、もっともラクできるインストール方法を見つける」
おすすめ学習ステップ
1. とにかく一番ラクな方法でインストール
2. そこそこ満足するまで気ままにいじり倒す
3. アンインストールする
4. 何種類かのインストール方法を試して、自分なりのインストール/アンインストールテクニックを手に入れる
5. 気ままにいじり倒す
6. 気ままにいじり倒す
7. 気ままにいじり倒す
MySQLのインストール方法あれこれ
①Windows の “MySQL Installer”
Windowsのインストーラー (msi)
②MacOSのパッケージ(dmg)
③Linux 系のリポジトリ(yum, apt など)
④Linux 系のパッケージ(rpm, debなど)
⑤バイナリを配置
ダウンロード
MySQLダウンロードページ
GAバージョンと開発バージョン
ダウンロード:OSの選択
最初のインストール
• もっとも楽な方法でさくっと入れよう
Windows:MySQL Installer
MacOS: dmg
Linux系: リポジトリから
簡単インストール:Linuxリポジトリ
(MySQLダウンロードページ)
極めるインストール
ぜひバイナリで!
理解が深まる
活用の幅が広がる一台の上に複数のMySQLとか
※正しく理解すれば、難しくはありません!
バイナリでのインストール
MySQL動作のしくみ
• 接続や指示を待ち受けているプログラムがある(サーバー)
• そこに接続に行くクライアントがあるだけ。
mysqld(プログラム)
TCP Port 3306
Socket fileクライアント
Mysqlクライアント
MySQL動作のしくみ
• 接続や指示を待ち受けているプログラムがある(サーバー)
• そこに接続に行くクライアントがあるだけ。
mysqld(プログラム)
TCP Port 3306
Socket file
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)を用意する。
• 競合するソフトウェア(MariDB)が入っているので除去する
• 必要なライブラリをインストールする
①動作環境の用意
$ 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)の例
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.errbasedir = /home/ec2-user/mysql/mysql5718datadir = /home/ec2-user/mysql/mysql5718/dataport=15718socket=/tmp/mysql5718.sockcharacter-set-server=utf8mb4[mysqladmin]socket=/tmp/mysql5718.sock[mysql] port=15718socket=/tmp/mysql5718.sockdefault-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 &
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-develsudo 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.gzmkdir -p mysql/cd mysql
tar xvf ../mysql-8.0.${MVER}-dmr-linux-glibc2.12-x86_64.tar.gzmv 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.errbasedir = /home/ec2-user/mysql/mysql80${MVER}datadir = /home/ec2-user/mysql/mysql80${MVER}/dataport=180${MVER}
socket=/tmp/mysql80${MVER}.sockcharacter-set-server=utf8mb4
[mysqladmin]socket=/tmp/mysql80${MVER}.sock
[mysql]port=180${MVER}socket=/tmp/mysql80${MVER}.sockdefault-character-set=utf8mb4EOF
bin/mysqld --defaults-file=./my.cnf --initializebin/mysql_ssl_rsa_setup --defaults-file=./my.cnf
bin/mysqld_safe &
sleep 3
grep 'temporary password' my.errecho To connect: ./bin/mysql --defaults-file=./my.cnf -uroot -pecho Change password: ALTER USER root@localhost IDENTIFIED BY \'mypass\';
MySQLのバイナリでのインストール
Linux(AWSのRed Hat)の例おまけ:MySQL 8.0.1 オレオレセットアップスクリプトの例
極意(再掲)
つまりインストールを極める!
今日のキーワードです
× 「知り尽くす」
○ 「あなた自身が、もっともラクできるインストール方法を見つける」
インストールと
アンインストールを
自在に操って、
どんどんMySQLを
試しちゃいましょう!
- Fin -
展示ブースのご案内