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.