rubytomato's “Getting Started”

Webアプリケーション開発の入門的な記事を投稿していきます。

Windows 10にMySQL 8.0をMSIインストーラを使わずにZipファイルからインストールする

はじめに

ローカルPCに開発用途のMySQL 8.0をインストールする方法を説明します。インストール方法には、MSIインストーラ(ファイルの拡張子がmsi)を使う方法と、zipファイルを使う方法があります。 ダウンロードページではMSIインストーラがお勧めされていますが、この記事ではzipファイルを使って手動でインストールする方法を説明したいと思います。

zipファイルでインストールするメリット

  • レジストリを更新しないので、アンインストールはファイル削除だけで済む。
  • 複数の異なるバージョンのMySQLをインストールすることが簡単。

この記事ではWindows 10 64bitに、2020年3月現在で最新バージョンのMySQL Community Server 8.0.19をインストールします。

事前準備

Windows 10にMySQLをインストールするには、事前にMicrosoft Visual C++ 2015 Redistributable Packageというランタイムライブラリをインストールしておく必要があります。

Important
MySQL 8.0 Server requires the Microsoft Visual C++ 2015 Redistributable Package to run on Windows platforms. Users should make sure the package has been installed on the system before installing the server. The package is available at the Microsoft Download Center.

インストールされていない場合はMicrosoftサポートページ ( https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads ) からインストーラをダウンロードしてインストールします。

Windows 10が32ビット/64ビットかでダウンロードするファイルが異なります。64ビットの場合はFig1の赤い線を引いた"vc_redist.x64.exe"というリンクをクリックします。

f:id:rubytomato:20200320175521p:plain
Fig1. vc_redist.x64.exeのダウンロード

ダウンロードした"vc_redist.x64.exe"をダブルクリックするとインストール画面が表示されるので”ライセンス条項および使用条件に同意する(A)”をチェックしてインストールボタンをクリックします。

f:id:rubytomato:20200320175559p:plain
Fig2. vc_redist.x64.exeのインストール

インストールが終了するとPCを再起動するように求められるので再起動します。 以上でインストールは完了です。

MySQLのダウンロード

ダウンロードページ ( MySQL :: Download MySQL Community Server ) からzipファイル (mysql-8.0.19-winx64.zip) をダウンロードします。 Fig3の赤い枠線で囲った"Select Operating System:"は"Microsoft Windows"を選択、ダウンロードするファイルは"Windows (x86, 64-bit), ZIP Archive"を選びます。

f:id:rubytomato:20200320162426p:plain
Fig3. MySQL Download

Fig4のダウンロード画面の赤い枠線で囲った”No thanks, just start my download.”というリンクをクリックするとダウンロードが始まります。

f:id:rubytomato:20200320162656p:plain
Fig4. No thanks, just start my download.

zipファイルをダウンロードしたら、そのzipファイルが正しいか(破損していないか、改ざんされていないか)確認するため、MD5チェックサムで検証します。 Fig3のオレンジ色の線を引いたところにMD5: f52c52e7b499958acc5f08ce0a869cabという記載がありますが、これがダウンロードするzipファイルのMD5チェックサムです。

実際にダウンロードしたzipファイルのMD5チェックサムを出力し、ダウンロードページに記載されているMD5チェックサムと同一であれば正しいファイルと判断できます。 MD5チェックサムの出力には、Windows 10標準コマンドのcertutil.exeを使用します。

zipファイルのあるフォルダでコマンドプロンプトを開き、以下のコマンドを入力します。

certutil -hashfile mysql-8.0.19-winx64.zip MD5

コマンドを実行すると次の結果が出力されます。2行目がMD5チェックサムです。ダウンロードページに記載されてるMD5チェックサムと比較します。

MD5 ハッシュ (対象 mysql-8.0.19-winx64.zip):
f52c52e7b499958acc5f08ce0a869cab
CertUtil: -hashfile コマンドは正常に完了しました。

以上でMySQLのダウンロードは完了です。

MySQLのインストール

インストールと言ってもダウンロードしたzipファイルを7-Zipなどのツールで展開するだけです。 この記事では展開して出来たフォルダを以下のフォルダへコピーしました。以降はこのフォルダをインストールディレクトリと呼びます。

C:\dev\mysql-8.0.19-winx64

このフォルダをWindowsエクスプローラで表示してFig5のような状態であることを確認します。

f:id:rubytomato:20200320162900p:plain
Fig5. インストールディレクト

初期設定

オプションファイルの作成

オプションファイルとはmy.cnfmy.iniというファイル名で知られるMySQLの設定をまとめたテキストファイルです。 Windowsではmy.iniというファイル名が一般的なので、このファイルをインストールディレクトリ直下に作成します。

C:\dev\mysql-8.0.19-winx64\my.ini

とりあえず、以下の内容をコピーしてmy.iniファイルへペーストします。もしMySQLのインストールディレクトリがC:\dev\mysql-8.0.19-winx64でなければ、ファイルパスは適宜修正してください。 またファイルパスの区切り文字は\ではなく2重\\にします。

[mysqld]
basedir = C:\\dev\\mysql-8.0.19-winx64
datadir = C:\\dev\\mysql-8.0.19-winx64\\data
tmpdir = C:\\dev\\mysql-8.0.19-winx64\\temp

## logging

general_log = 1
general_log_file = C:\\dev\\mysql-8.0.19-winx64\\logs\\general.log

log_error = C:\\dev\\mysql-8.0.19-winx64\\logs\\error.log

slow_query_log = 1
slow_query_log_file = C:\\dev\\mysql-8.0.19-winx64\\logs\\slow_query.log

log_timestamps = SYSTEM

フォルダの作成

MySQLのインストールディレクトリ直下にdatalogstempフォルダを作成します。 以下のようにフォルダが出来ていればOKです。

C:\dev\mysql-8.0.19-winx64\data
C:\dev\mysql-8.0.19-winx64\logs
C:\dev\mysql-8.0.19-winx64\temp
  • data は MySQLのデータファイルが格納されます。
  • logs は ログファイルが格納されます。
  • temp は 一時ファイルが作成されます。

MySQLの初期化

MySQLのインストールディレクトリでコマンドプロンプトを開き、以下のコマンドでMySQLの初期化を行います。 ※以降のコマンドプロンプトからのコマンド実行は、断りが無い限りMySQLのインストールディレクトリから行います。

初期化処理に問題が無ければ特にメッセージは出力されません。もし何かメッセージが表示された場合はエラーが起きた可能性があるので、これまでの作業を見直してください。

bin\mysqld --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini --initialize

Windowsエクスプローラでlogsフォルダを開き、error.logというファイルをテキストエディタで開きます。 このファイルにはMySQLのrootユーザーの仮パスワードが記録されています。

2020-03-20T17:12:39.004140+09:00 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xhkUnc1qQe%8

この行のxhkUnc1qQe%8が仮パスワードです。

MySQLの起動

MySQLの初期化が終了したら起動してrootユーザーでログインしてみます。 起動は以下のコマンドで行います。

bin\mysqld --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini --console

以下が起動メッセージです。この中の3行目のready for connections. Version: '8.0.19' socket: '' port: 3306 MySQL Community Server - GPL.というメッセージがあれば起動できています。

2020-03-20T17:22:48.440783+09:00 0 [System] [MY-010116] [Server] C:\dev\mysql-8.0.19-winx64\bin\mysqld.exe (mysqld 8.0.19) starting as process 11176
2020-03-20T17:22:49.331232+09:00 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-03-20T17:22:49.408022+09:00 0 [System] [MY-010931] [Server] C:\dev\mysql-8.0.19-winx64\bin\mysqld.exe: ready for connections. Version: '8.0.19'  socket: ''  port: 3306  MySQL Community Server - GPL.
2020-03-20T17:22:49.617563+09:00 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060

rootユーザーでログインする

MySQLの起動が確認できたらrootユーザーでログインしてみます。 MySQLのインストールディレクトリで新しいコマンドプロンプトを開き、以下のコマンドを実行してrootユーザーでログインします。

bin\mysql -u root -p

Enter password: には先ほど確認した仮パスワードを入力します。 ログインできると以下のようなメッセージが表示されると思います。

Enter password: ************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
仮パスワードを変更する

仮パスワードをそのまま使い続けることはできないので、以下のSQLコマンドで変更します。 new passwordの部分を新しいパスワードに変えて実行してください。またパスワードはシングルクォート( ' )で囲みます。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

変更が成功すると以下のメッセージが表示されます。

Query OK, 0 rows affected (0.01 sec)

パスワードの変更ができたら以下のSQLコマンドでログアウトします。

exit

MySQLの停止

rootユーザーでのログインまで確認できたら一旦MySQLを停止します。 停止は以下のコマンドで行います。

bin\mysqladmin -u root -p shutdown

Enter password:には、先ほど変更したrootユーザーのパスワードを入力します。

Enter password: ********

MySQLを起動したコマンドプロンプトを見てみると、以下のメッセージが表示されていて停止したことがわかります。

2020-03-20T17:37:22.663545+09:00 9 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.19).
2020-03-20T17:37:22.667429+09:00 0 [System] [MY-013105] [Server] C:\dev\mysql-8.0.19-winx64\bin\mysqld.exe: Normal shutdown.
2020-03-20T17:37:22.999047+09:00 0 [System] [MY-010910] [Server] C:\dev\mysql-8.0.19-winx64\bin\mysqld.exe: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.

MySQLの起動・停止用バッチファイルを作成

これまで、MySQLの起動・停止はコマンドプロンプトからコマンドを入力して行ってきましたが、これらのコマンドをバッチファイルにすることで簡単に行えるようにします。

起動用バッチファイル

インストールディレクトリ直下にstartup.batという名前のファイルを作成します。

C:\dev\mysql-8.0.19-winx64\startup.bat

startup.batをテキストエディタで開き、以下の内容をコピーしてペーストします。

rem 起動用バッチ
C:\dev\mysql-8.0.19-winx64\bin\mysqld --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini --console

pause

rootユーザーログイン用バッチファイル

インストールディレクトリ直下にroot_user.batという名前のファイルを作成します。

C:\dev\mysql-8.0.19-winx64\root_user.bat

root_user.batをテキストエディタで開き、以下の内容をコピーしてペーストします。

rem rootユーザーでログイン
C:\dev\mysql-8.0.19-winx64\bin\mysql --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini -u root -p

停止用バッチファイル

インストールディレクトリ直下にshutdown.batという名前のファイルを作成します。

C:\dev\mysql-8.0.19-winx64\shutdown.bat

shutdown.batをテキストエディタで開き、以下の内容をコピーしてペーストします。

rem 停止用バッチ
C:\dev\mysql-8.0.19-winx64\bin\bin\mysqladmin -u root -p shutdown

pause

これで、MySQLの起動はstartup.bat、停止はshutdown.batのクリックで行えるようになりました。 また、MySQLが起動していればroot_user.batをクリックしてrootユーザーでログインできます。

バッチファイルを作成する理由

ソフトウェアをインストールすると実行ファイルがあるパスを環境変数pathに追加するということがよくあります。 MySQLで言えばMySQLサーバーの実行ファイルであるmysqld.exeMySQLクライアントのmysql.exeなどです。フルパスを入力するよりmysqlと入力するだけで実行できるので便利ですが、複数バージョンのMySQLをインストールしていて使い分けしたい場合は、どのバージョンのMySQLがpathに登録されているのか気にする必要がでてきます。

このような場合、起動・停止用のバッチファイルを作成し実行ファイルへのフルパスを記述することで環境変数pathに登録する必要がなくなります。

pauseコマンド

startup.batとshtudown.batにpauseコマンドを入れています。pauseはコマンドプロンプトのコマンドで、エンターキーの入力があるまで処理を一時停止します。 pauseコマンドを入れておく理由は、MySQLの起動や停止に異常があった場合にコマンドプロンプト上で確認することができるためです。逆に入れていないとエラーが起きていてもコマンドプロンプトがそのまま閉じてしまうのでエラーが確認できません。 ただし、起動や停止に問題が内容であればbatファイルから削除しても構いません。

パスワードの入力を省略する

これはセキュリティ上よくないので、ローカル開発環境でのみ利用するようにしてください。 バッチファイルの-pオプションを以下のように--password=***** (***** は rootユーザーのパスワードに読み替えてください)と書き換えることで、パスワードの入力を省略できます。

rem rootユーザーでログイン
C:\dev\mysql-8.0.19-winx64\bin\mysql --defaults-file=C:\dev\mysql-8.0.19-winx64\my.ini -u root --password=*****

MySQLの再インストール

なんらかの理由でMySQLの環境をリセットして再作成したい場合は、以下のフォルダをWindowsエクスプローラで削除し、『初期設定』の『フォルダの作成』からやり直します。 ※dataフォルダも削除するので、それまで作成したデータがそのまま消えてしまう点に注意してください。

C:\dev\mysql-8.0.19-winx64\data
C:\dev\mysql-8.0.19-winx64\logs
C:\dev\mysql-8.0.19-winx64\temp

MySQLのアンインストール

MySQLのインストールディレクトリをWindowsエクスプローラで削除します。

C:\dev\mysql-8.0.19-winx64

事前準備の項でMicrosoft Visual C++ 2015 Redistributable Packageをインストールした場合は、Windows 10の設定 → アプリと機能の画面からアンインストールします。