6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQL8.0のZIP版をWindows10にインストールする

Last updated at Posted at 2019-02-11

インストーラー版を使わない理由

必要に応じてバージョンの切り替えが必要になるものは、インストーラーを使うと、別のバージョンを使いたい時にどうしたらいいのかが分からなくなることや、使わない時も自動起動されてしまいます。

自分が使う時に目的とするバージョンを立ち上げればいいので、ZIPファイルを展開してMySQL8.0 を使える状態にします。

やること

  1. ZIPアーカイブ版のダウンロードと展開
  2. my.cnf を作成
  3. MySQLの初期化
  4. rootパスワードの変更
  5. タイムゾーンの設定
  6. databaseと専用ユーザを作成

TL;DR

  • mysqld --initialize で生成されるrootパスワードは mysqld.err にある。
  • タイムゾーンは+9:00 でもok。
  • grant all privilegesは使えないから、create usergrantを使う。

設定手順

1. ZIPアーカイブ版のダウンロードと展開

MySQLのダウンロードページOther Downloads にある Windows (x86, 64-bit), ZIP Archive をダウンロードします。

MySQL80-zip-download.png

今回は、mysql-8.0.15-winx64.zip をダウンロードしました。ダウンロードした mysql-8.0.15-winx64.zip を任意のディレクトリへ展開します。今回は d:\my-work\mysql-8.0.15-winx64 に展開しました。

2. my.cnf を作成

展開したディレクトリ直下に my.cnf を作成します。フルパスで表記すると d:\my-work\mysql-8.0.15-winx64\my.cnf になります。

多くの設定項目があるのですが、必要なだけを設定します。

my.cnf
[mysqld]
default-time-zone='+9:00'

default_authentication_plugin=mysql_native_password

character-set-server = utf8mb4
collation-server = utf8mb4_ja_0900_as_cs
init-connect = SET NAMES utf8mb4

# dirs
basedir=d:/my-work/mysql-8.0.15-winx64
datadir=d:/my-work/mysql-8.0.15-winx64/data
tmpdir =d:/my-work/mysql-8.0.15-winx64/temp
pid-file=d:/my-work/mysql-8.0.15-winx64/mysqld.pid

3. MySQLの初期化

my.cnfdatadirtempdir で指定したディレクトリを作成した後に bin\mysqld --initialize を実行します。

cmd> cd /d d:\my-work\mysql-8.0.15-winx64
cmd> mkdir data
cmd> mkdir temp
cmd> bin\mysqld --initialize

バージョンが5.7の頃よりは時間が長く感じ(個人差があります)、dataディレクトリ配下にモリモリとファイルが作成されていきます。

プロンプトが返ってきたら、MySQLのサーバを起動します。

cmd> bin\mysqld  --standalone  --console 

4. rootパスワードの変更

bin\mysqld --initialize で生成されたパスワードを確認

DBの初期化時に --initialize-insecure オプションを使わずに、--initialize オプションを使ったので、rootユーザにはランダムなパスワードが設定されています。そのままでは使い難いので、別のパスワードを設定します。

ランダムなパスワードは data\mysqld.err に出力されています。

2019-02-11T00:16:51.201908Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: [ここがパスワード]

rootのパスワードを変更

新しいコマンドプロンプトを立ち上げて alter userでパスワードを変更します。

cmd> cd /d d:\my-work\mysql-8.0.15-winx64
cmd> bin\mysql -u root -p -h localhost
Enter password: [data/mysqld.errに記録されているパスワードを入力]
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.15

Copyright (c) 2000, 2019, 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> alter user root@'localhost' identified by '[新しパスワード]';

5. タイムゾーンの設定

my.cnfにタイムゾーンを指定するときに default-time-zone='Asia/Tokyo' と記載する記事を見かけます。Windows版のZIP版では mysql.time_XXXX テーブルが空です。
公式ドキュメントのMySQL Server Time Zone Supportに従ってタイムゾーンのデータを投入します。

https://dev.mysql.com/downloads/timezones.html から timezone_2018i_posix_sql.zip をダウンロードして、任意のディレクトリに展開します。展開すると、timezone_posix.sql があります。

MySQL8-timezone-download.png

rootユーザでMySQLに接続して、 mysqlデータベースを選択して、 timezone_posix.sql に記載されたスクリプトを実行します。

cmd> bin\mysql -u root -p -h localhost 
mysql> use mysql
mysql> \. path/to/timezone_posix.sql

スクリプトの実行が終了したら、 my.cnfのtimezoneを Asia/Tokyo に変更します。その後、MySQLを再起動してください。

my.cnf
default-time-zone='Asia/Tokyo'

タイムゾーンは日本だけで使っているのであれば+9:00 でもいいと思うけど、一時期にサマータイムが騒がれた時に +9:00 に固定すると夏時間に対応できないのと、unix系のプラットフォームとそろえるために、Asia/Tokyo にしました。

6.databaseと専用ユーザを作成

create databaseは今まで通りです。 MySQL5.xまでは grant で権限付与とパスワード設定を行えましたが、MySQL8からロールができたことで、ユーザ作成と権限付与を別々に行います。
詳しくは mysql8 grant all privileges でググってください。

cmd> bin\mysql -u root -p -h localhost 
mysql> create database my_db;
mysql> create user 'my_db_user'@'localhost' identified by 'secret'; 
mysql> grant all privileges on my_db.* to 'my_db_user'@'localhost';

バッチファイル

インストーラーを使わないのでバッチファイルを作っておきます。

MySQLを起動する

mysql_start.bat
d:\my-work\mysql-8.0.15-winx64\bin\mysqld  --standalone  --console 

エクスプローラーか mysql_start.batをダブルクリックして、MySQLを起動します。起動した後はコマンドのウィンドウが残り続けます。終了するときは、コマンドのウィンドウで ctrl+cを入力してください。

MySQLにパスを通して、コマンドプロンプトからMyQLのコマンドを利用できる

mysql_cmd.bat
set PATH=d:\my-work\mysql-8.0.15-winx64\bin;%PATH%
start

MySQLにパスが通った状態でコマンドプロンプトが起動するので、MySQLの任意のコマンドを実行できます。

メモ: --initialize-insecure を使わなかった理由

--initialize-insecure を使わなかったのは、rootユーザのパスワードを空にすると、そのまま使い続けてしまうので、それはよくないなか~と思ったのと、パスワードを設定するためには、--skip-grant-tables を指定して再起動する必要があります。

それなら、--initialize を使うのがよいかなと思いました。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?