rubytomato's “Getting Started”

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

Windows 10にMySQL Workbenchをインストールする方法と初歩的な使い方の説明

はじめに

MySQL WorkbenchはMySQLサーバーと同じOracleが開発している無償で使えるMySQLサーバー専用のデータ管理ツールです。この記事ではWindows 10へMySQL Workbenchをインストールする方法、および初歩的な使い方を説明します。

MySQL Workbenchのダウンロード

ダウンロードページ( MySQL :: Download MySQL Workbench )からインストーラ(mysql-workbench-community-8.0.19-winx64.msi)をダウンロードします(2020年3月現在の最新バージョンです)。 ダウンロード画面(Fig1)の赤い枠線で囲った"Select Operating System:"は"Microsoft Windows"を選択、ダウンロードするファイルは"Windows (x86, 64-bit), MSI Installer"を選びます。

f:id:rubytomato:20200320201813p:plain
Fig1. MySQL Workbench Download

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

f:id:rubytomato:20200320201912p:plain
Fig2. No thanks, just start my download.

なお、MD5チェックサムの検証方法は、この記事で説明していますのでご覧ください。 rubytomato.hateblo.jp

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

MySQL Workbenchのインストール

ダウンロードしたインストーラ(mysql-workbench-community-8.0.19-winx64.msi)をダブルクリックして実行します。 インストール自体はインストーラの画面の通り進めていけばOKです。

f:id:rubytomato:20200320202036p:plain
Fig3. install (1)

f:id:rubytomato:20200320202056p:plain
Fig4. install (2)

f:id:rubytomato:20200320202111p:plain
Fig5. install (3)

f:id:rubytomato:20200320202129p:plain
Fig6. install (4)

f:id:rubytomato:20200320202149p:plain
Fig7. install (5)

インストールが完了すると、そのままMySQL Workbenchが起動します。(Fig8)

f:id:rubytomato:20200320202343p:plain
Fig8. MySQL Workbenchの起動直後

コネクションの作成

まず、コネクションを作成する前にMySQLサーバーを起動しておきます。 次にMySQL Workbenchのトップ画面(Fig9)の赤い枠線で囲った+アイコンをクリックします。

f:id:rubytomato:20200321230513p:plain
Fig9. MySQL Connections

Setup New Connection画面(Fig10)のConnection Name:に"localhost"と入力しました。この名前は分かりやすい名前であればなんでも良く、例えば"Local DB"でも良いです。 Test Connectionボタンをクリックします。

f:id:rubytomato:20200321210420p:plain
Fig10. Setup New Connection

rootユーザーのパスワードを入力してOKボタンをクリックします。

f:id:rubytomato:20200321210450p:plain
Fig11. Connect to MySQL Server

認証できると成功画面(Fig12)が表示されます。

f:id:rubytomato:20200321210525p:plain
Fig12. Successfully made the MySQL connection

Setup New Connection画面に戻るのでOKボタンをクリックして入力内容を登録します。

MySQL Workbenchのトップ画面(Fig9)に戻りますが、トップ画面にいま登録したコネクションが追加されています。表示されている"Localhost"とはSetup New Connection画面(Fig10)で入力したConnection Nameで、"root"は接続ユーザー名です。

f:id:rubytomato:20200321211950p:plain
Fig13. 登録したコネクション

接続する

Fig13の登録したlocalhostコネクションをクリックするとrootユーザーのパスワード入力を求められるので入力します。 認証が成功するとFig14の画面が表示されます。 画面中央の"Query 1"というタブがSQL文を入力して実行する欄になります(タブは増やすことができます)。ここにテーブル作成やデータ挿入を行うSQL文を入力して実行します。その下の"Output"というビューにはこれまで実行したSQLの内容とその成否(成功したか失敗したか)が表示されます。 画面左側の"Navigator"は2つのタブに分かれていて、"Schemas"タブにはデータベース(MySQLではスキーマと同じ意味)の情報、"Administration"タブにはMySQLサーバーの情報が表示されます。

f:id:rubytomato:20200322183327p:plain
Fig14. MySQL workbench

SQLを実行する

画面中央の"Query 1"タブでSQLを入力して実行してみます。実行するのは

  • 1) データベース作成
  • 2) ユーザー作成
  • 3) ユーザーの権限設定
  • 4) テーブル作成
  • 5) データ登録
  • 6) データ検索
  • 7) データ更新
  • 8) データ全件削除

です。

1) データベースを作成する

データベースの作成はCREATE DATABASE文を使用します。IF NOT EXISTSとはsample_dbというデータベースが無ければ実行するという意味になります。

CREATE DATABASE IF NOT EXISTS sample_db
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_general_ci
;

このSQL文を実行するにはFig15の赤い線で囲ったアイコンをクリックするか、Ctrl + Enterを押下します。 左端の数値は行番号で、その隣のアイコンはSQLステートメントの先頭に表示されます。

f:id:rubytomato:20200323221402p:plain
Fig15.

OutputビューにSQLの実行結果が表示されます。左端のアイコンが実行結果で、緑色のアイコンは成功、赤色のアイコンは失敗を示します。

f:id:rubytomato:20200323221046p:plain
Fig16.

(補足)上記でSQLステートメントの先頭にアイコンが付くと書きましたが、正確には正しいSQLステートメント(構文エラーが無い)にアイコンが付き、正しくないSQLステートメント(構文エラー / Syntax Error)の場合は赤い×アイコンが付きます。Fig15Bは、SQL文が正しくないので×アイコンが付いています。

f:id:rubytomato:20200323233512p:plain
Fig15B.

2) ユーザーを作成する

ユーザーの作成はCREATE USER文を使用します。

CREATE USER IF NOT EXISTS 'sample_user'@'localhost'
  IDENTIFIED BY 'sample_pass'
  PASSWORD EXPIRE NEVER
;

この画面(Fig17)ではアイコンが2つ表示されているので、2つのSQLステートメントが入力されていることがわかります。 このように1つのタブに複数のSQLステートメントが入力されている状態で、任意のSQLステートメントを実行するにはSQLステートメントかその行末にカーソルを置いた状態で SQLの実行アイコンをクリックするか、Ctrl + Enterを押下します。 この例では2つ目のSQLステートメント(つまりCREATE USER文)を実行したいので、行番号10にカーソルを置いて実行アイコンをクリックします。

f:id:rubytomato:20200322222341p:plain
Fig17.

このようにOutputビューにSQLの実行結果が表示されます。

f:id:rubytomato:20200322222458p:plain
Fig18.

3) ユーザーの権限を設定する

2)で作成したsample_userへ、1)で作成したsample_dbに対して権限を与えます。権限の付与はGRANT文を使用します。

GRANT ALL ON sample_db.* TO 'sample_user'@'localhost';

f:id:rubytomato:20200322222634p:plain
Fig19.

OutputビューにSQLの実行結果が表示されます。

f:id:rubytomato:20200322222715p:plain
Fig20.

4) テーブルを作成する

テーブルの作成はCREATE TABLE文を使用します。テーブル名の前にsample_dbとデータベース名を付けている点に注意してください。

CREATE TABLE IF NOT EXISTS sample_db.todo (
  id BIGINT AUTO_INCREMENT,
  title VARCHAR(255) NOT NULL,
  description VARCHAR(1024) NULL,
  done BOOLEAN NOT NULL DEFAULT FALSE,
  create_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  update_at TIMESTAMP(3) NULL,
  PRIMARY KEY (id)
)
CHARACTER SET = utf8mb4,
COLLATE utf8mb4_general_ci
;

f:id:rubytomato:20200322222758p:plain
Fig21.

OutputビューにSQLの実行結果が表示されます。

f:id:rubytomato:20200322222815p:plain
Fig22.

データベースの状態を確認

テーブルまで作成したので、この時点でのデータベースの状態を確認します。 Navigator画面(Fig23)の赤い枠線で囲ったアイコンをクリックするとデータベースの状態が更新されます。

f:id:rubytomato:20200322223009p:plain
Fig23.

更新後のNavigator画面(Fig24)です。このように作成したデータベース(sample_db)と、テーブル(todo)が確認できます。

f:id:rubytomato:20200322223542p:plain
Fig24.

さらにデータベース名(sample_db)を右クリックし、メニューからSchema Inspectorを選択すると(Fig25)、データベースに関する情報を確認できる画面(Fig26)が表示されます。同様にテーブル名(todo)を右クリックし、メニューからTable Inspectorを選択すると、テーブルに関する情報が確認できます。

f:id:rubytomato:20200323223859p:plain
Fig25.

タブ(Tables、Columns、Indexes、Triggersなど)で、それぞれの情報を確認できます。

f:id:rubytomato:20200323223913p:plain
Fig26.

新しいコネクションを登録する

rootユーザーは管理者権限を持つユーザーなので特定の場合でしか使用しません。以降の操作は新しく作成したユーザー(sample_user)で行うように新しいコネクションを登録します。 いま開いているコネクションは、メニューバーのFileClose Connection Tabをクリックして閉じます。 Setup New Connection画面(Fig27)を開いたら、Connection Name:に任意の名前を(この例では"localhost (sample_user)"としました)、Username:にsample_user、Default Schema:にsample_dbと入力します。

f:id:rubytomato:20200323225741p:plain
Fig27.
次にPassword:の"Store in Vault ..."というボタンをクリックして、sample_userのパスワードを入力します(Fig28)。
f:id:rubytomato:20200323225757p:plain
FIg28.
最後にOKボタンをクリックすると画面(Fig29)に新しいコネクションが登録されていると思います。このコネクションをクリックするとsample_usersample_dbへ接続します。
f:id:rubytomato:20200324003021p:plain
Fig29.

5) データを登録する

新しいコネクションで接続したら、テーブル(todo)へデータを登録してみます。

INSERT INTO todo (title) VALUES ('買い物に行く')
, ('部屋の掃除')
, ('犬の散歩')
, ('ブログを書く')
, ('JavaScriptの勉強')
;

auto_commit

デフォルトではauto_commitは有効になっているので、insert文やdelete文を実行するとその都度コミットされます。 auto_commitの設定はFig30の赤い枠線で囲ったアイコンで切り替えられます。これは有効な状態で

f:id:rubytomato:20200323235212p:plain
Fig30.

クリックするとauto_commitは無効になりFig31のようになります。また左隣りの2つのアイコン(commitとrollback)が有効になり、変更をコミットする場合は明示的にcommitアイコンをクリックする必要があります。

f:id:rubytomato:20200323235509p:plain
Fig31.

このINSERT文を実行して、commitアイコンをクリックするとOutputはFig32のようになります。

f:id:rubytomato:20200324002750p:plain
Fig32.

6) データを検索する

以下のSELECT文で登録したデータを検索してみます。

select * from todo;

Queryタブの下に検索結果が表形式で表示されます。また、赤い枠線で囲ったエクスポートアイコンをクリックすると検索したデータをCSV形式のファイルに出力できます。

f:id:rubytomato:20200324010138p:plain
Fig33.

7) データを更新する

表形式のデータを直接編集して更新することもできます。 たとえば3行目の"犬の散歩"を"犬の散歩へ行く"に編集してみます。すると右下の"Apply"、"Revert"ボタンがクリックできるようになります。編集をコミットするには"Apply"ボタンをクリックします。

f:id:rubytomato:20200324004849p:plain
Fig34.
Applyボタンをクリックします。
f:id:rubytomato:20200324004947p:plain
Fig35.
Applyボタンをクリックします。Cancelをクリックするとコミットを中断します。
f:id:rubytomato:20200324005004p:plain
Fig36.
Finishボタンをクリックして完了します。
f:id:rubytomato:20200324005020p:plain
Fig37.

(補足)データの更新はQueryタブから直接UPDATE文を実行することでも可能です。

8) データを全件削除する

以下のDELETE文でtodoテーブルのデータを全件削除しようとすると、エラーが発生して削除できません。

delete from todo;
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.

f:id:rubytomato:20200324010759p:plain
Fig38.

デフォルトの設定では、安全性を考慮して全件を削除することはできないようになっています。この設定を変えるにはメニューバーのEditPreferences...SQL EditorOtherSafe Updateのチェックを外し、再接続します。

f:id:rubytomato:20200324011448p:plain
Fig39.

SQLを実行する (その2)

SQLを実行する方法は2つあります。いままではカーソルのあるSQLステートメントだけを実行してきましたが、複数のSQLステートメントをまとめて実行する方法もあります。 たとえば、以下のような個別のINSERT文をまとめて実行するには、

INSERT INTO todo (title) VALUES ('買い物に行く');
INSERT INTO todo (title) VALUES  ('部屋の掃除');
INSERT INTO todo (title) VALUES  ('犬の散歩');
INSERT INTO todo (title) VALUES  ('ブログを書く');
INSERT INTO todo (title) VALUES  ('JavaScriptの勉強');

Fig40の赤い枠線で囲ったアイコンをクリックします。

f:id:rubytomato:20200324011911p:plain
Fig40.

また、Fig41のように選択状態にすると、選択されたSQLステートメントだけが実行されます。この例では上3行のINSERT文だけが実行されます。

f:id:rubytomato:20200324012347p:plain
Fig41.

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の設定 → アプリと機能の画面からアンインストールします。

Spring BootでシンプルなWebアプリケーションを開発する環境構築手順について

はじめに

これはJavaやSpring Bootの学習をするために動かせるプロジェクトを作成したいけど、そのための環境構築やプロジェクト作成方法がわからない方向けの記事です。 記事の前半で開発環境の構築手順、後半でWebアプリケーションのプロジェクト作成と実行までを説明しています。 作成するプロジェクトは"Hello World"を表示するだけのシンプルなWebアプリケーションですが、これをベースにいろいろと手を入れながら学習できると思います。

開発環境の構築手順

開発環境について

この記事の説明で利用するPCはWindows 10です。Macユーザの方は適宜読み替えてください。

Java

Javaは、OpenJDK 13.0.2を使用します。(2020/3月時点の最新バージョンです)

インストール

OpenJDKのインストールは、一般的なソフトウェアやOracle JDKのインストールとは違って、zipファイルをダウンロードしそれを展開して配置するだけで済みます。 まず、zipファイルをダウンロードするためhttp://jdk.java.net/13/にアクセスします。 Fig1の赤い枠線で囲ったリンクをクリックするとzipファイルのダウンロードがはじまります。

f:id:rubytomato:20200316135159p:plain
Fig1. OpenJDKのダウンロード

ダウンロードが完了したら、7-Zipなどzipファイルを展開するツールを使って任意のフォルダへzipファイルを展開します。 この記事では下記の場所へ展開しましたので、この場所をOpenJDKのインストールフォルダとして説明を続けます。

C:\dev\openjdk\jdk-13.0.2

念のため、Windowsエクスプローラでこの場所に下記のフォルダやファイルがあることを確認します。

f:id:rubytomato:20200316135306p:plain
Fig2. OpenJDKのフォルダ内容

バージョンの確認

コマンドプロンプトを起動し、下記のコマンドを実行してOpenJDKのバージョンを確認します。

C:\dev\openjdk\jdk-13.0.2\bin\java -version

以下の実行結果が返ってくれば成功です。

openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

環境変数pathの設定

javaコマンドを毎回フルパス(絶対パス)で入力しなくても済むように、環境変数pathにjavaコマンドのフルパスを追加します。 Windowsのスタートメニューを開き(キーボードのWinキーを押下でも可)、そのままenvと入力します。 Fig3のような画面が表示されたら、赤い枠線で囲った”開く"をクリックします。

f:id:rubytomato:20200316135339p:plain
Fig3. システム環境変数の編集

Fig4の”環境変数(N)"ボタンをクリックします。

f:id:rubytomato:20200316135437p:plain
Fig4. システムプロパティ画面

Fig5のようにJAVA_HOMEというシステム変数の変数値にOpenJDKのインストールディレクトリを登録します。

f:id:rubytomato:20200316135519p:plain
Fig5. JAVA_HOMEの追加

最後にFig6のように環境変数pathに%JAVA_HOME%\binという値を追加します。

f:id:rubytomato:20200316135549p:plain
Fig6. 環境変数pathの編集

環境変数pathが正しく設定されたかどうか確認するため、コマンドプロンプトを新しく開き以下のコマンドでバージョンを確認します。 バージョン情報が返ってきたら成功です。

java -version

Eclipse

Webアプリケーションの開発ツールにEclipseを使用します。開発ツールにはEclipse以外にもIntelliJ IDEAやNetBeans、Spring Tools Suiteなどがあります。また日本語化されていて便利な拡張機能がプレインストールされているPleiades All in Oneも人気があります。

インストール

EclipseのインストールもOpenJDKと同様にzipファイルをダウンロードして展開するだけで済みます。 ダウンロードページにアクセスするとFig7のページが表示されますが、ここのダウンロードボタンではなく赤い枠線で囲った"Download Packages"というリンクをクリックします。

f:id:rubytomato:20200316135634p:plain
Fig7. Eclipseのダウンロードページ

この画面(Fig8)の"Windows 64-bit"のリンクをクリック、次の画面(Fig9)のファイル名をクリックするとzipファイルのダウンロードが始まります。

f:id:rubytomato:20200316135732p:plain
Fig8. Windows 64-bit
f:id:rubytomato:20200316135759p:plain
Fig9. ダウンロードリンク

ダウンロードしたzipファイルを7-Zipなどのツールで展開します。 この記事では下記の場所へ展開しましたので、この場所をEclipseのインストールフォルダとして説明を続けます。

C:\dev\eclipse

Windowsエクスプローラで、この場所に下記のフォルダやファイルがあることを確認します。

f:id:rubytomato:20200316135826p:plain
Fig10. Eclipseのフォルダ内容

eclipse.exeを右クリックしてメニューの「送る」→「デスクトップ(ショートカットを作成)」をクリックします。これでデスクトップにEclipseのショートカットアイコンが作成されました。

起動と設定

デスクトップに作成したEclipseのアイコンをクリックしてEclipseを起動します。 起動するとワークスペースの場所を決めるダイアログウィンドウが表示されます。ワークスペースの場所はどこでも構わないのですが、この記事ではEclipseをインストールしたフォルダと同じ場所にeclipse-workspaceというフォルダを作成しました。

f:id:rubytomato:20200316140223p:plain
Fig11. Eclipseワークスペースの場所

C:\dev\eclipse-workspace

起動するとWelcome画面(Fig12)が表示されます。右下のチェックを外してWelcome画面を閉じます。(チェックを外さないと毎回Welcome画面が表示されます)

f:id:rubytomato:20200316140258p:plain
Fig12. Welcome画面

次にJAVA_HOMEの設定が正しく反映されているか確認します。 メニューバーのWindowPreferencesをクリックし、左側メニューのJavaInstalled JREsをクリックします。 画面右側のInstalled JREsにJAVA_HOMEで登録したOpenJDKが反映されていることを確認します。

f:id:rubytomato:20200316140854p:plain
Fig13. Installed JREsの確認

そのまま続けて、左側メニューのGeneralWorkspaceをクリックします。 画面右側のText file encodingDefault (MS932)からOtherのUTF-8へ、New text file line delimiterDefault (Windows)からOtherのUnixへ変更します。(この変更はプロジェクトをGitで管理する場合を想定しています。)

f:id:rubytomato:20200316141438p:plain
Fig14. Workspaceの設定

次に左側メニューのGeneralEditorsText Editorsをクリックします。 画面右側のShow whitespace charactersをチェックします。この設定を有効にすると目に見えない文字(半角スペースやタブ、改行)がエディタ上では代替文字で可視化されるようになります。

f:id:rubytomato:20200316141734p:plain
Fig15. Text Editorの設定

拡張機能のインストール

Spring Bootを使ったWebアプリケーションのプロジェクトを作成できるようにSpring Tools 4という拡張機能を追加します。 メニューバーのHelpEclipse Marketplace...をクリックし、Searchタブの検索フィールドにspring tools 4と入力して検索します。 画面(Fig16)に表示された"Spring Tools 4 (aka Spring Tool Suite 4) 4.5.1.RELEASE"のInstallボタンをクリックしてインストールを始めます。

f:id:rubytomato:20200316142211p:plain
Fig16. Spring Tools 4のインストール

確認画面(Fig17)で、そのままConfirmボタンをクリックします。

f:id:rubytomato:20200316142635p:plain
Fig17. Confirm画面

ライセンスの同意画面(Fig18)で、I accept the terms of the license agreementsにチェックを入れてライセンスに同意し、Finishボタンをクリックしてインストールを開始します。

f:id:rubytomato:20200316142930p:plain
Fig18. ライセンス同意画面

インストールが終わるとEclipseの再起動を促されるので、一旦再起動します。

以上で開発環境の構築は完了です。

プロジェクトの作成

Spring Bootを利用したWebアプリケーションのプロジェクトを簡単に作成する手段がいくつかありますが、主なものではSpring InitializrというWebサービスを利用する方法、もう1つはEclipse拡張機能のSpring Tools 4を利用する方法があります。 この記事では2つ目の方法、Spring Tools 4を使ってプロジェクトを作成します。

プロジェクトの作成開始

EclipseのメニューバーのFileNewOther...をクリックします。 画面(Fig 19)のフィールドにspringと入力し、検索結果に表示されたSpring Starter Projectを選択して、Nextボタンをクリックします。

f:id:rubytomato:20200316152814p:plain
Fig19. Spring Starter Project

プロジェクトのアーキテクチャを選択

この画面(Fig 20)で、Java Versionを13へ変更します。Typeでプロジェクトのビルドツールを選択できますがデフォルトのMavenのままにします。

f:id:rubytomato:20200316152923p:plain
Fig20. Spring Boot Project

Spring Bootの依存ライブラリを選択

Spring Boot 2.2.5は、2020年3月現在の最新バージョンです。 画面左に利用できるライブラリの一覧がカテゴリ別に表示されています。 画面右に選択したライブラリの一覧が表示されます。(Fig21は最初の状態なので何も選択されていません)

f:id:rubytomato:20200316152957p:plain
Fig21. 依存ライブラリの選択

この記事で開発するWebアプリケーションは"Hello World"を表示するだけのシンプルなものなので、必要な依存ライブラリは以下の3つだけです。

  • WebカテゴリのSpring Web
  • Template EnginesカテゴリのThymeleaf
  • Developer ToolsカテゴリのSpring Boot DevTools

Spring Webの追加

f:id:rubytomato:20200316153054p:plain
Fig22. Spring Webの追加

Thymeleafの追加

f:id:rubytomato:20200316153129p:plain
Fig23. Thymeleafの追加

Spring Boot DevToolsの追加

f:id:rubytomato:20200316153206p:plain
Fig24. Spring Boot DevTools

選択できる依存ライブラリはたくさんありますが、とりあえず必要なのは3だけなので選択できたら最後にFinishボタンをクリックしプロジェクトを作成します。 (※たとえば、データベースを扱いたい場合はSQLカテゴリの"Spring Data JPA"や"Spring Data JDBC"とデータベースドライバ(MySQL DriverやPostgreSQL Driver)を選択します。)

作成直後のプロジェクトの状態

プロジェクトの作成が完了すると、Project Explorerにプロジェクトが展開されます。

f:id:rubytomato:20200316153719p:plain
Fig25. 作成されたプロジェクト

プロジェクト内にDemoApplicationというクラスがありますが、これはSpring Tools 4が生成したクラスで、Spring Bootを利用したアプリケーションの起動クラスになります。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

また、"src/main/resources"にapplication.propertiesというSpring Bootアプリケーションの設定ファイルが生成されていますが、プロジェクト作成直後はただの空ファイルです。 この記事でも特に設定を変える部分はないので編集しません。

Mavenでビルドする

とりあえず、プロジェクト作成直後の状態でビルドを行ってみます。 Project Explorer上のプロジェクト名を右クリックし、メニューのRun AsMaven buildをクリックします。

f:id:rubytomato:20200316155645p:plain
Fig26. Run Configurations

編集画面(Fig27)でGoalsにclean packageと入力し、Runボタンをクリックしてビルドを行います。(編集画面の設定は、この後でも行えます)

f:id:rubytomato:20200316155930p:plain
Fig27. Edit Configurations

ビルド結果がEclipseのConsoleに出力されます。Fig28のように"BUILD SUCCESS"と表示されればビルドは成功です。

f:id:rubytomato:20200316160151p:plain
Fig28. Build Success

ビルドが成功すると、targetフォルダにjarファイル(成果物/アーティファクト)が生成されています。 jarファイルが見えない場合は、Project Explorer上のプロジェクト名を選択した状態でF5キーを押下して画面をリフレッシュしてください。

f:id:rubytomato:20200316161621p:plain
Fig29. jarファイル

以降のMavenビルドは、プロジェクト名を右クリック → Run ASMaven buildで行えます。

Hello Worldの実装

ここから、"Hello World"を表示するWebアプリケーションの開発手順について説明します。

controllerパッケージを追加する

com.example.demoというパッケージを右クリックし、メニューのNewPackageをクリックします。

f:id:rubytomato:20200316165439p:plain
Fig30. create package

f:id:rubytomato:20200316165611p:plain
Fig31. create package

controllerクラスを追加する

作成したcom.example.demo.controllerパッケージを右クリックし、メニュ―のNewClassをクリックします。

f:id:rubytomato:20200316165642p:plain
Fig32. create class

クラス名にHelloWorldControllerと入力します。

f:id:rubytomato:20200316165801p:plain
Fig33. create class

HelloWorldController

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloWorldController {

    @GetMapping(value = "/")
    public String index(Model model) {
        String message = "ハローワールド";
        model.addAttribute("message", message);
        return "hello-world";
    }

}

テンプレートファイルを追加する

templatesフォルダを右クリックし、メニューのNewOther...をクリックします。

f:id:rubytomato:20200316165932p:plain
Fig34. create template file

入力フィールドに"html"と入力し、検索結果に表示されたHTML Fileを選択して、Nextボタンをクリックします。

f:id:rubytomato:20200316170137p:plain
Fig35. create template file

テンプレートファイル名にhello-world.htmlと入力します。

f:id:rubytomato:20200316170323p:plain
Fig36. create template file

hello-world.html

<!DOCTYPE html>
<html lang="ja" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
    <div>
        <h1 th:text="${message}"></h1>
    </div>
</body>
</html>

アプリケーションの実行

アプリケーションの実行方法にもいくつか手段があります。

Eclipseから実行する

  • 1つ目はDemoApplicationクラスを右クリックし、Run ASJava Application もしくは Spring Boot Appをクリックする方法。
  • 2つ目はプロジェクト名を右クリックし、Run ASSpring Boot Appをクリックする方法。

アプリケーションを実行すると、EclipseのConsoleに起動メッセージが出力されます。 Consoleの最後の方に"Started DemoApplication in 1.918 seconds"のようなメッセージが表示されていればアプリケーションの起動は成功です。

2020-03-16 17:29:53.264  INFO 9184 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2020-03-16 17:29:53.425  INFO 9184 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-03-16 17:29:53.429  INFO 9184 --- [  restartedMain] com.example.demo.DemoApplication         : Started DemoApplication in 1.918 seconds (JVM running for 2.803)

この方法でアプリケーションを実行すると、次からEclipseのメニューバーのRunアイコンから簡単に実行できます。

f:id:rubytomato:20200316181041p:plain
Fig37. run application

Mavenコマンドで実行する

3つ目はMavenコマンドで実行する方法です。コマンドプロンプトでプロジェクトディレクトリを開き、下記のコマンドを実行します。 この方法でもEclipseから起動したのと同じ起動メッセージが出力されます。

mvnw spring-boot:run

jarファイルを実行する

4つ目はビルドして生成したjarファイルを実行する方法です。 以下はプロジェクトディレクトリから実行する例になります。 1行目のコマンドでMavenビルドを実行してjarファイルを生成します。(jarファイルが生成されていればスキップしても構いません) 2行目のコマンドでjarファイルを実行します。

mvnw clean package
java -jar .\target\demo-0.0.1-SNAPSHOT.jar

上記の方法のいずれかでアプリケーションが起動したらブラウザを立ち上げ、以下のURLでアクセスします。画面に”ハローワールド”と表示されれば成功です。

http://localhost:8080/

環境構築手順とプロジェクトの作成方法の説明は以上です。