他の PC から MySQL データベースに接続できるようにするための設定 (Windows 版)

ページ作成日 :

動作確認環境

MySQL
  • MySQL 8.0
Windows
  • Windows 11

動作必須環境

MySQL
  • MySQL 8.0
Windows
  • Windows 11
  • Windows 10
Windows Server
  • Windows Server 2022
  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2

前提条件

  • MySQL 8 がインストールされていること

ファイアウォールの確認

MySQL ではインストール時に以下の画面でファイアウォールが設定されるので特に追加設定する必要はありません。

念のためファイアウォールの設定を確認します。Windows のバージョンによって表示するまでの操作が異なるのでスタートメニューで「ファイアウォール」と入力して表示させます。

左のメニューから「詳細設定」を選択します。

左から「受信の規則」を選択すると一覧に「Port 3306」と「Port 33060」が追加されていることが分かります。これが MySQL で追加されたものです。

設定ファイルの確認

以前は設定ファイルから bind-address を変更する必要があったのですが、現バージョンではこの項目はないので特に設定を変更する必要はありません。

Windows での MySQL の設定ファイルは以下の場所にあります。 ProgramData フォルダは隠しフォルダになっているのでパスをエクスプローラーのアドレスバーに直接入力するか、隠しフォルダを見えるように設定してください。

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

ユーザーのアクセス権限設定

MySQL データベースにログインするにはユーザーを指定する必要があるのですが、デフォルトでは全てのユーザーはローカルからしかアクセスできません。 ですのでここではユーザーにアクセス許可を設定します。

今回アカウントの追加手順を省くために root アカウントに対して操作していますが、 実際の運用では別途ユーザーアカウントを作成してそのアカウントに対して接続許可を行うのが望ましいです。

接続許可についてはコマンドで行う方法、GUI で行う方法それぞれあります。

ユーザーのアクセス権限設定 (GUI での操作)

スタートメニューから「MySQL -> MySQL Workbench 8.0 CE」を選択して起動します。

起動したら左下にデフォルトのインスタンスがあるので選択します。

パスワードを求められるので root アカウントでログインします。

左の Navigator メニューから Administration タブを選択している状態で「Users and Privileges」を選択します。

一覧から権限を変更するアカウントを選択します。ここでは root アカウントを選択しています。

Limit to Hosts Matching の項目があり初期設定では localhost になっていると思います。これは localhost からしかアクセスできないことを意味します。 この値に接続許可する PC の IP アドレスを設定します。 普通に入力すると1台だけ対象になりますが、範囲選択したい場合はワイルドカード「%」が使用できるので「192.168.0.%」と指定すれば「192.168.0.0」~「192.168.0.255」を許可することになります。

入力したら右下の「Apply」ボタンをクリックして適用することができます。

User 一覧も変更されていることを確認できます。

ユーザーのアクセス権限設定 (コマンドでの操作)

補足
調べた限りの範囲なので確定情報ではないですが、MySQL 8 ではユーザー作成後にコマンドでアクセス許可 host を変更できないためユーザー作成時点で host を確定しておく必要があります。

スタートメニューから「MySQL -> MySQL 8.0 Command Line Client」を選択して実行します。

パスワードを求められるので root のパスワードを入力します。

以下のコマンドを入力するとユーザーの一覧とホストを参照できます。

select user,host from mysql.user;

ユーザーを作成するには以下のコマンドを入力します。 「アクセス許可ホスト」に外部から接続させたい PC の IP アドレスを入力します。 ワイルドカード「%」が使用できるので、全てからアクセス許可できるようにするには「%」を、「192.168.0.0」~「192.168.0.255」を許可したい場合は「192.168.0.%」のように入力します。 「%」を入れる場合はシングルクォーテーションで囲って下さい。

create user <ユーザー名>@<アクセス許可ホスト> identified by '<パスワード>';

入力例

create user user1@'192.168.0.%' identified by 'xxxxxxxx';

上記コマンドでユーザーを作成することはできましたが、何のアクセス権限もないので以下のコマンドで権限を追加します。

「権限の種類」については「ALL [PRIVILEGES] (全権限)」「CREATE (データベース、テーブルなどの作成権限)」「SELECT (テーブルレコードの参照)」等があります。 権限の内容については公式サイトを確認してください

設定する権限はデータベース単位、テーブル単位で指定できます。「*.*」と入力すると全てのデータベース、テーブルに対してアクセス権限を設定できます。

grant <権限の種類> on <データベース名>.<テーブル名> to <ユーザー名>@<アクセス許可ホスト>;

入力例

grant all privileges on *.* to user1@'192.168.0.%';

設定を反映させるには以下のコマンドを入力します。

flush privileges;

再度ユーザー一覧を確認すると作成・設定されていることを確認できます。

接続確認

外部から接続できるツールであれば何でもいいですが、今回は MySQL の公式クライアントである Workbench で接続してみます。

他の PC にインストールしている Workbench を起動します。

MySQL Connection を追加します。

接続に必要な設定を入力します。DNS 名でもいいですが、Workbench だとなぜか接続できなかったので IP アドレスで指定しています。

接続確認を行い成功すれば設定は正常に行われていると判断出来ます。