TECHNOLOGY

WindowsにMySQLをインストールする方法(Windows 11)

この記事では、Windows 上にMySQLをインストールする方法を示します。

目次

MySQLのインストーラのダウンロード

OracleのMySQLの公式サイト(リンク)にアクセスすると、次のような画面が現れます。

メニューの「ダウンロード」を選択して、画面を下にスクロールすると「MySQL Community (GPL) Donwloads」という部分があるのでクリックします。

次に、MySQL Community Downloads の中から「MySQL Installer for Windows」をクリックします。

現在のバーションがダウンロードできるので、「Download」をクリックします。ファイルが2つありますが、上のファイルはインターネットに接続しながら必要なファイルを順次ダウンロードするインストーラで、下のファイルは一括で必要なファイルをダウンロードするインストーラです。インストールされる中身はどちらも同じです。

次に、「No thanks, just start my download」を実行すると、インストーラをダウンロードできます。

MySQLのインストール

ダウンロードしたインストーラを実行します。許可を求めるプロンプトが表示される場合がありますが、その場合は「はい」をクリックすると、インストーラが開きます。

Choosing a Setup Type

Choosing a Setup Typeから「full」を選択して、「Next」ボタンを押します。

インストールする製品の確認画面になります。「Execute」をクリックすると、イントールが開始されます。

ダウンロードでエラーが発生する場合には、ウィルスセキュリティソフトを一時的にオフにして、インストーラを再度起動し直すとうまく動作する場合があります。
また、すべてのアプリケーションが必要ではない場合は、1つ前の画面で「Custom」を選択すれば、インストールするアプリケーションやそのバージョンを選択することができます。

完了したら Status の欄が「Ready to download」から「Complete」になるので「Next」を押します。

Product Configuration

設定を行うソフトウェアが表示されますので「Next」をクリックします。

Type and Networking

作成するMySQLサーバーのインスタンスの設定を行います。

まず、Config Typeを選択します。この設定は、MySQLサーバーのインスタンスに割り当てるシステムリソース(メモリ)の量を定義します。

設定タイプ内容
Development Computer
(開発)
他の多くのアプリケーションと共有した状態でMySQLサーバーを構築します。通常は個人のPCやWorkstationが該当します。MySQLは最小限のメモリを使用するように構成されます。
Server Computer
(サーバー)
ウェブサーバーなど、他のいくつかのアプリケーションがこのコンピュータで実行される場合を想定します。この設定では、MySQLが中程度のメモリを使用するように構成します。
Dedicated Computer
(専用)
MySQLサーバーの実行に専念させるコンピュータを想定します。ほかのアプリケーションがこのコンピュータで実行されないことを想定するため、利用可能なメモリの大部分をMySQLが使用するように構成します。
Manual
(手動)
MySQLインストーラがサーバーのインストールを最適化しないように設定します。代わりにmy.ini構成ファイルに含まれるサーバー変数のデフォルト値を設定します。手動タイプを選択すると、MySQLインストーラはtmp_table_size変数のデフォルト値を16Mとして使用します。

次に、Connectivityを設定します。デフォルトでTCP/IPが選択されています。チェックを外すと、ローカルホストからの接続のみを許可します。TCP/IP接続オプションが選択されている場合は以下を変更できます。

PortMySQLプロトコル接続用のポートで、デフォルト値は3306。
X Protocol PortMySQL 8.0サーバーを構成する際に表示されるXプロトコルポートで、デフォルト値は33060。
Open Windows Firewall ports for network accessネットワークアクセスのためにWindowsファイアウォールポートを開放するオプション。デフォルトでON。

名前付きパイプを有効にする場合には、Named Pipe にチェックを入れ、パイプ名(デフォルト:MySQL)を設定します。これはnamed_pipeシステム変数の設定に相当します。

共有メモリを有効にする場合には、Shared Memoryにチェックを入れ、メモリ名(デフォルト名:MySQL)を設定します。これはshared_memoryシステム変数の設定に相当します。

「Show Advanced and Loggin Options」にチェックを入れた場合は、エラーログや一般ログなどのファイルパスやサーバーIDを指定できます(後述)。

Named Pipe

「Type and Networking」で名前付きパイプを有効にした場合にのみ表示されます。ここでは、クライアントソフトウェアに対して名前付きパイプ接続のアクセス制御レベルを設定します。

Minimum access to all users
(推奨)
全ユーザーに対して最小限のアクセス権のみを与えます。デフォルトで有効となっており、最も安全です。
Full access to members of an existing local groupローカルグループのメンバーに対して完全なアクセス権を与えます。最小のアクセス権限がクライアントソフトウェアにとって制限が厳しすぎる場合、このオプションを使用します。これにより、名前付きパイプに対する完全なアクセス権をもつユーザーの数を減らします。グループはWindows上で事前に作成されている必要があり、リストから選択できます。このグループはできるだけ限られたメンバーのみにすることが推奨されます。新しく追加されたメンバーはローカルグループに参加するために一度ログアウトし、再度ログインする必要があります。
Full access to all users
(非推奨)
全ユーザーに対して完全なアクセス権を与えます。このオプションは安全性が低く、他の安全策が実施されている場合にのみ設定すべきものになります。
Authentication method

サーバー側の認証オプションを選択します。次のステップで作成するアカウントに適用されます。

MySQL 8.0は caching_sha2_pasword というデフォルトの認証プラグインをサポートしており、デフォルトではこの認証方法が推奨されています。ただし、古いクライアントやアプリケーションを使用しており、新しい認証方法を使用できず、アプリケーションの更新もできない場合には、MySQLサーバーを mysql_native_password を使用した古い認証方法(Legacy Authentication Method)に変更できます。

Accounts and Roles

この画面では、ルートアカウントのパスワード(必須)を設定し、オプションでユーザーアカウントを作成します。パスワードを入力すると、パスワードの強さが表示されます。

「MySQL User Accounts」はオプションです。「Add User」または「Edit User」をクリックして、MySQLのユーザーアカウントを作成または編集します。「Add User」または「Edit User」をクリックすると、次の画面が表示されます。項目を設定して「OK」をクリックすると、MySQLにユーザーアカウントが追加または変更されます。

User Nameユーザー名を最大32文字までで入力します。
Hostローカル接続のみの場合は「localhost」を選択し、サーバーへのリモート接続が必要な場合は「<All Hosts (%)>」を選択します。
Roleユーザーの役割を設定します。下の画像用のように役割の下に説明が表示されます。例えば、DB Adminを選択した場合には、すべてのタスクを実行する権限を付与します。
Passwordパスワードを設定します。非推奨ですが、パスワードを空白にすることもできます。
Windows Service

MySQLサーバーは、オペレーションシステムによって管理される名前付きサービスとして実行でき、Windowsが起動する際に自動的にスタートできるように設定できます。

「Configure MySQL Server as a Windows Service」にチェックを入れると、MySQLサーバーがWindowsサービスとして構成されます。MySQL 8.0リフェレンスマニュアルでは、Windowsの起動および停止時にMySQLが自動的に起動および停止するように、Windowsサービスとしてインストールすることが推奨されています。このため、特に理由がない場合は「Configure MySQL Server as a Windows Service」にチェックをいれます。

チェックをしている場合は次の項目を設定できます。

Windows Service Nameサービス名を入力します(デフォルト値:MySQL80)。
Start the MySQL Server at System Startupチェックを入れると、システム起動時にMySQLサーバーが起動します。このとき、サービスの起動タイプが「自動」に設定されます。チェックを入れない場合は、サービスの起動タイプが「手動」に設定されます。
Standard System AccountMySQLサービスはネットワークサービスアカウントとして実行されます。ネットワークサービスアカウントはローカルシステムアカウントよりも制限があり、セキュリティが強化されています。このアカウントはネットワーク上のリソースにアクセスする権限をもちつつ、サーバー内での操作が可能です。
Custom User特定のユーザーアカウントでサービスを実行します。
カスタムユーザーには、Microsoft Windowsに「サービスとしてログオン」するための権限をあらかじめ与える必要があります。
Server File Permissions

サーバーデータを保存するディレクトリにあるファイルへの権限を選択できます。

Yes, grant full access ...MySQLインストーラーは、Windowsサービスを実行しているユーザーとAdministratorsグループに対して、フォルダとファイルの完全なアクセス権を付与します。その他のすべてのグループとユーザーのアクセスを拒否します。
Yes, but let me review and ...MySQLインストーラーが最初の選択肢と似た構成のオプションを使用し、完全なアクセス権をもつユーザーを表示します。そして、完全なアクセス権を特定のグループやユーザーに付与するかどうかを変更できます。権利を付与する必要がない場合はリストから該当するメンバーを移動させ、アクセスを制限することができます。
No, I will manage the permissions ...このオプションを選択すると、サーバー構成中にファイル権限の変更が行われません。サーバー構成が完了した後に、Dataフォルダと関連ファイルのセキュリティを手動で確保する必要があります。
Logging Options

「Type and Networking」で「Show Advanced and Loggin Options」にチェックをいれている場合にのみ設定します。ログファイルのON/OFFとログファイルのファイルパスを設定します。

Advanced Options

Type and Networking」で「Show Advanced and Loggin Options」にチェックをいれている場合にのみ設定します。

Server ID:Server IDにはレプリケーショントポロジーで使用されるユニークな識別子を指定します。1つ前の画面でバイナリログが有効にしている場合には、サーバーIDを指定する必要があります。レプリケーションは、データベースにおいてデータのコピーを複数のサーバーに複製するプロセスのことで、データの可用性、冗長性、パフォーマンスを向上させます。レプリケーショントポロジーは、データベースのレプリケーションにおいて、データのコピーをどのように配置・接続するかを示す構造や方式のことです。
Table Names Case (Lower Case)lower_case_table_names = 1を設定します。
Table Names Case (Preserve Given Case)lower_case_table_names = 2を設定します。

Server IDの詳細については、server_id システム変数を参照ください。

Apply Configuration

「Execute」をクリックすると、設定が反映されます。反映が終了したら「Finish」をクリックします。

MySQL Router Configuration

MySQL Routerの設定を行います。InnoDBクラスタ用のMySQL Routerを構成する場合は「Bootstrap MySQL Router for use with InnoDB Cluster」にチェックを入れます。チェックを入れた場合、MySQLアプリケーションとInnoDBクラスタの間のトラフィックを管理するための設定を行います。

HostnameInnoDBクラスタ内のプライマリ(シード)サーバーのホスト名(デフォルトはlocalhost)。
PortInnoDBクラスタ内のプライマリ(シード)サーバーのポート番号(デフォルトは3306)。
Management Userroot権限を持つ管理ユーザーを設定します。
Password管理ユーザーのパスワードを設定します。
Classic MySQL protocol connections to InnoDB ClusterClassic MySQLからInnoDBクラスタへのプロトコル接続で使用するポートを設定します。
Read/Writeに、最初のベースポート番号を未使用のポート(80~65532の範囲)を設定します。
そうすると、残りのポートは自動的に割り当てられます。
X Protocol connections to InnDB Cluster自動的に割り当てられます。

MySQL Routerを設定した後は、rootアカウントはユーザーテーブルにroot@localhost(ローカル)のみとして存在し、root@%(リモート)は存在しません。ルーターとクライアントがどこに位置していても、たとえ両方がシードサーバーと同じホストにあっても、ルーターを通過する接続はサーバーによってリモートとして扱われます。そのため、ローカルホストを使用してサーバーに接続した場合、認証は行われません。

$> \c root@localhost:6446

設定が完了すると、MySQL RouterはローカルのWindowsサービスとして実行されます。「Next」をクリックして、「Execute」をクリックすると設定が適用されます。

Connect To Server

サーバーへの接続テストを行います。User nameとPasswordにそれぞれ root とそのパスワードを設定して「Check」をクリックします。接続がうまくいった場合には Status 欄が「Connection succeeded」となるので、「Next」をクリックします。

Apply Configuration

「Execute」をクリックすると設定が反映されます。反映されたら、「Finish」をクリックします。

Installation Complete

インストールは完了です。ログを残す場合は「Copy Log to Clipboard」をクリックすると、ログがクリップボードにコピーされるため、メモ帳などに貼り付けて保存します。

「Finish」をクリックして終了です。

環境変数の設定

システム環境変数を設定すると、コマンドプロンプトや PowerShell 上のどこのフォルダにいても、MySQLのコマンドが使用できるようになります。

タスクバーのスタートボタンを押して、「システム環境変数の編集」を検索して選択すると、「システムのプロパティ」が開きます。詳細設定のタグを開くと「環境変数」ボタンがあるのでクリックします。

システムのプロパティウィンドウにおける環境変数ボタンの画像

ユーザー環境変数、または、システム環境変数がありますので、そのどちらかの変数「Path」を選択して「編集」をクリックします(変数 Path がない場合は「新規」をクリックします)。

ユーザー環境変数とシステム環境変数は、その変数のスコープ(有効範囲)が異なります。ユーザー環境変数の場合は現在ログインしているユーザーのみで有効になり、システム環境変数の場合には全ユーザーで有効になります。現在のログインユーザーでのみ使用するのであれば、ユーザー環境変数に追加したほうがよいです。

変数Pathの値にC:\Program Files\MySQL\MySQL Server 8.0\bin(MySQL Server 8.0 の数字部分はインストールしたバーションで変わります)を追加します(下画面は「編集」ボタンを押した後の画面)。

追加した後に「OK」を押すと、環境変数が設定されます。

サーバーの起動と停止

管理者権限で、コマンドプロンプトまたはPowerShellを開いて、

net start MySQL80

を実行すると、MySQLサーバーのサービスが起動します。また、

net stop MySQL80

を実行すると、MySQLサーバーのサービスが停止します。ここで、MySQL80はインストール時に設定したMySQLサーバーのサービス名です。

MySQL サーバーをサービスとして起動するにチェックしていない場合(Configure MySQL Server as a Windows Serviceにチェックしていない場合)には、mysqldコマンドを使用してサーバーを起動します。また、停止する場合には、mysqladmin" -u root shutdown -p を使用します。

MySQL サーバーを、後から Windows サービスとして追加することもできます。追加には、mysqld --install MySQL80を使用します(MySQL80はサービス名)。

動作確認

コマンドプロントまたは PowerShell を開いて、

mysql -u root -p

を実行し、インストールの際に入力した root のパスワードを入れると、MySQLサーバーにアクセスできます(MySQLサーバーが起動している必要があります)。

設定ファイルの場所

Windowsでインストーラの設定により作成された設定ファイル my.ini(または my.cnf)は、デフォルトでは以下のフォルダに作成されます。

・ C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

・ C:\Program Files\MySQL\MySQL Server 8.0\my.ini

C:\ProgramDataは隠しフォルダになっています。見つからない場合は、コマンドプロンプト(cmd)で、次のコマンドにより調べることができます。

dir C:\my.ini /s

まとめ

WindowsにMySQLをインストールする方法を示しました。ご参考になりましたら幸いです。

-TECHNOLOGY
-,