Windows10にMySQL 8.0.13をインストール

2019年1月1日(約5年前)の記事となっております。色々ご注意ください。

覚書です。
ところどころ省いています。
実践環境で使う場合はご注意ください。

本記事の特徴

MySQL 8.0.13 のインストール

本記事ではMySQLのインストールについて扱います。

ZIPファイルによるインストールとします。インストーラによるウィザード形式でのインストールではありません。

Windows10へのインストール

本記事ではWindows10へのインストールを行っていきます。

VMware、VirtualBox、Dockerのような仮想環境だったり、物理的なLinuxサーバを立てたりせずにWindows機一台でLAMP環境を完結させます。
あ、LAMPじゃなくってこの場合WAMPですね。

複数バージョンの共存

共存させる意味についてはリンク先で記しています。

ある案件のシステムはMySQL5.5、こっちの案件のWebサイトはMySQL5.0、など扱うお仕事が増えていくとバージョンも様々になってきます。

いくつかの案件を同時進行していると複数のバージョンのMySQLが同時に動作していたほうが効率的です。

前提

本記事は制作・開発や動作確認などローカル環境での用途を目的としています。
本番サーバへの利用を考えている場合は本記事の内容に加えセキュリティ対応など必要な処置を行ってください。

Windows10 Pro 64bit へのインストールを行います。
そのため、ダウンロードファイルの選択などで「64bit」を選択する場面があります。
お使いのパソコンが32bitの場合は読み替えてご覧ください。

ダウンロード

公式サイトからダウンロードします。
https://dev.mysql.com/downloads/mysql/

最新版でない場合
本日 2018-12-31 時点の最新版は MySQL 8.0.13 になっています。
次のバージョンが出るとアーカイブのほうに移動しています。
https://downloads.mysql.com/archives/community/

下図のとおり「mysql-8.0.13-winx64.zip」の「Download」ボタンをクリックします。アーカイブ版は若干画面が違いますがだいたい同じです。

「MySQL Installer」って書かれてるMSIのほうじゃなく zip のほうを取得します。

Oracle Webアカウントを持っているなら青の「Login」のボタン、持っていないなら緑の「Sign Up」のボタンからログインできます。
Oracle Webアカウントでは資料をダウンロードしたりフォーラムでディスカッションしたりできるようです。
詳しくは英文なのでGoogle翻訳などで読んでみてください。

「No thanks, just start my download.」をクリックしてスグにダウンロードすることもできます。

「名前を付けて保存」になりますので、ダウンロードフォルダを選んで「保存」をクリックします。

インストールする場所について

インストールする場所は好きな場所で構いません。
本記事では説明のため次の場所にインストールすることにします。

フォルダ名はzipと同じ名前にします。

MySQL本体 (app)

G:\app\mysql\mysql-8.0.13-winx64

本体とは基本的にzipを解凍したそのままのファイルです。

ユーザーデータ (app_data)

G:\app_data\mysql\mysql-8.0.13-winx64

ユーザーデータは、データファイルそのものやログファイルなど新しく作られていくファイルになります。

本記事では本体とユーザーデータを分けますが、分けない場合は好みの場所で(本体と同一ディレクトリでも)大丈夫です。

インストール

解凍して配置

ダウンロードした「mysql-8.0.13-winx64.zip」を本体のフォルダにそのまま解凍します。

下図のようになります。

データフォルダの作成

次のフォルダを作成します。

G:\app_data\mysql\mysql-8.0.13-winx64\logs
G:\app_data\mysql\mysql-8.0.13-winx64\tmp

次のようになります。

ここに data フォルダを作りたくなりますが、作らずに進みます。
data フォルダは「データベースの初期化」で自動生成されます。むしろ data があるとエラーになります。

my.iniの作成

次のファイルを作成します。好みのテキストエディタを使ってください。

G:\app\mysql\mysql-8.0.13-winx64\my.ini

次の内容にします。

[mysqld]
port = 58013
user = mysql
basedir = G:/app/mysql/mysql-8.0.13-winx64
datadir = G:/app_data/mysql/mysql-8.0.13-winx64/data
tmpdir = G:/app_data/mysql/mysql-8.0.13-winx64/tmp
socket = G:/app_data/mysql/mysql-8.0.13-winx64/tmp/mysql.sock
pid-file = G:/app_data/mysql/mysql-8.0.13-winx64/logs/mysqld.pid
log-error = G:/app_data/mysql/mysql-8.0.13-winx64/logs/mysqld
character-set-server=utf8mb4
collation-server=utf8mb4_bin
explicit_defaults_for_timestamp
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
lower_case_table_names=2
max_allowed_packet=16MB
default_authentication_plugin=mysql_native_password

[mysql]
port = 58013
user = mysql
socket = G:/app_data/mysql/mysql-8.0.13-winx64/tmp/mysql.sock
default-character-set = utf8mb4

[mysql.server]
port = 58013
user = mysql
basedir = G:/app/mysql/mysql-8.0.13-winx64
datadir = G:/app_data/mysql/mysql-8.0.13-winx64/data
tmpdir = G:/app_data/mysql/mysql-8.0.13-winx64/tmp
socket = G:/app_data/mysql/mysql-8.0.13-winx64/tmp/mysql.sock
pid-file = G:/app_data/mysql/mysql-8.0.13-winx64/logs/mysqld.pid
log-error = G:/app_data/mysql/mysql-8.0.13-winx64/logs/mysqld
default-character-set = utf8mb4

[mysqld_safe]
port = 58013
user = mysql
basedir = G:/app/mysql/mysql-8.0.13-winx64
datadir = G:/app_data/mysql/mysql-8.0.13-winx64/data
tmpdir = G:/app_data/mysql/mysql-8.0.13-winx64/tmp
socket = G:/app_data/mysql/mysql-8.0.13-winx64/tmp/mysql.sock
pid-file = G:/app_data/mysql/mysql-8.0.13-winx64/logs/mysqld.pid
log-error = G:/app_data/mysql/mysql-8.0.13-winx64/logs/mysqld
default-character-set = utf8mb4

[client]
port = 58013
user = mysql
socket = G:/app_data/mysql/mysql-8.0.13-winx64/tmp/mysql.sock

ポート番号

ポート番号は 58013 にしましたが好みの番号でOKです。
3行目、19行目、25行目、36行目、47行目の5か所。

プライベートポート番号は、49152 ~ 65535 で自由に利用できるポート番号として割り当てられています。

ここでは、MySQLのバージョン 8.0.13 の「8013」
先頭に 5 をつけて 「58013」でプライベートポート番号の範囲にしました。

異なるバージョンのMySQLをインストールするときは同じようにバージョン番号の頭に 5 をつけていくようにします。

スクリプト作成

起動スクリプト

次のテキストファイルを作成します。

G:\app\mysql-8.0.13-winx64-start.bat

次の内容にします。

@ECHO OFF

SET BIN_TARGET=G:/app/mysql/mysql-8.0.13-winx64/bin

g:
cd %BIN_TARGET%
mysqld --standalone --console

※「g:」(ジーコロン)のところは BIN_TARGET に設定したパスのドライブレターにします。

停止スクリプト

次のテキストファイルを作成します。

G:\app\mysql-8.0.13-winx64-stop.bat

次の内容にします。

@ECHO OFF

SET BIN_TARGET=G:/app/mysql/mysql-8.0.13-winx64/bin

g:
cd %BIN_TARGET%
mysqladmin shutdown -u root -p

pause

※「g:」(ジーコロン)のところは BIN_TARGET に設定したパスのドライブレターにします。

初期設定

データベース初期化

初期化は最初の1回だけなのでバッチファイルを作らずにMS-DOSから行います。

win キーと r キーを押して「cmd」と入力してEnterキー

MS-DOSが起動したら次の通り進めていきます。

g:
cd G:\app\mysql\mysql-8.0.13-winx64\bin

mysqld --initialize --console

次のようになります。

赤枠で囲んでいるところにrootのパスワードがありますので控えておきます。

※↑の画像にパスワードが入ってますが当然ながらこのあと変更しています。

起動と停止

起動

次のファイルをダブルクリックして起動します。

G:\app\mysql-8.0.13-winx64-start.bat

自動起動は設定しません。MySQLは複数バージョンを同時使用する前提ですが必要なときに必要なバージョンを起動させたいので手動起動にします。

停止

次のファイルをダブルクリックして停止します。

G:\app\mysql-8.0.13-winx64-stop.bat

停止するときにはパスワードを求められるので、MySQLのrootパスワードを入れます。

ちなみにMySQLを停止する場面はあまり無いかもしれません。私の場合はMySQLが停止するときはWindowsを再起動やシャットダウンするときなので、そのままWindowsを終了させています。

コマンド操作

まず「起動スクリプト」をダブルクリックして、MySQLを起動させておきます。

次にコマンドプロンプトを起動します。
「winキー + rキー」を押して「ファイル名を指定して実行」のウィンドウを出し、「cmd」と入力し、「Enterキー」

MySQLの「bin」フォルダに移動します。

g:
cd G:\app\mysql\mysql-8.0.13-winx64\bin

rootでログイン

次のようにして、rootでログインします。

mysql -u root -P 58013 -p

rootパスワードの変更

MySQL8から ALTER USER に変わっています。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'パスワード';

rootユーザーの認証方式を変更

phpMyAdminにrootユーザーでログインしたい場合は認証方式を変える必要があります。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';

character_setの確認

mysql> show variables like 'character_set%';
+--------------------------+--------------------------------------+
| Variable_name            | Value                                |
+--------------------------+--------------------------------------+
| character_set_client     | utf8mb4                              |
| character_set_connection | utf8mb4                              |
| character_set_database   | utf8mb4                              |
| character_set_filesystem | binary                               |
| character_set_results    | utf8mb4                              |
| character_set_server     | utf8mb4                              |
| character_set_system     | utf8                                 |
| character_sets_dir       | G:\app\mysql\mysql-8.0.13-winx64\share\charsets\ |
+--------------------------+--------------------------------------+
8 rows in set, 1 warning (0.00 sec)

mysqlから抜ける

mysql> quit;