2
0

WSL2でMySQL serverを立ち上げてローカルネットワーク上の他のデバイスから接続するまで

Last updated at Posted at 2024-07-16

概要

WSL2+MySQLのインストールから、ローカルネットワーク内の外部デバイスから接続するまでの手順を記載しています。

既にWSL2にMySQLをインストールする記事やWSL2に対して外部デバイスからアクセスする手順を記載した記事は存在しますが、情報が分散されており、完了までに手間取った箇所がいくつかあるので、情報を集約したまとめ記事を作成しました。

手順

前提

登場人物

  • winPC:WSL2をインストールするWindows PCです。
  • WSL2:Windows PCにインストールされたWSL2です。WSL2上でMySQLのサーバーを立ち上げます。
  • ほかのデバイス:MySQLに接続するwinPCとは別のデバイスです。今回はローカルネットワーク内の別デバイスのWindows 11から接続します。

バージョン確認

  • MySQLのバージョンは5.7系と8.0系がありますが、今回はver8.0.38を使用します。
  • LinuxのディストリビューションはUbuntu-20.04を使用します。MySQLの5.7系を使用する際は、対応を確認してください。

WSL2のインストール

以下の記事の通りに実行します。
WSL2の使用方法も詳しく記載されているので、WSLに慣れていない方は、一度通して読むことをお勧めします。

WSL(Windows Subsystem for Linux)インストールからファイル操作、プログラムの実行まで - Curios

上記記事のWSLから外部インターネットへ接続するための設定の項で設定する際に、/etc/resolv.confのうち、nameserverの行をパブリックDNSサービスを使用するよう記述されていますが、プライベートなDNSサーバーがある場合はそちらを入力します。

winPCのコマンドプロンプトから

cmd
ipconfig /all

を実行することで、DNSサーバーのIPアドレスを確認できます。

WSL2でUbuntuにMySQLをインストール

下記の記事のうち

  • インストール手順
  • パスワードでログインするようにする
  • クライアントソフト(MySQL WorkBench)をインストールする

を実行しましょう。

winPCのMySQL WorkBenchから接続テストができていればOKです。

【WSL】WSL2にmysqlをインストールする - echo("備忘録");

インストール手順でrootのパスワードを設定した後に、設定に関する質問が4回聞かれますが、セキュリティの観点から、特別な事情がない限りはすべてYesにすることをお勧めします。

WSL2で外部デバイスからの接続を許可する

次に、MySQLの外部接続を許可します。

MySQLは初期設定ではlocalhost以外から接続できないようになっているので、以下のコマンドで設定ファイルを書き換えます。

筆者はテキストエディタはnanoを使用していますが、vim等任意のテキストエディタを使用しても問題ありません。その場合はnanoの部分の記述を任意のテキストエディタに変更します。

bash
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1
の行を
# bind-address = 127.0.0.1
に変更してコメントアウトします。

変更後、ファイルを保存して閉じてください。
(nanoの場合は、Ctrl + X→Y→Enter)

参考:MySQLの外部接続を許可し、外部接続できるDBを作成する | タンス

WSL2でroot以外のユーザー作成を行う

現時点では、localhostからrootユーザーのみでMySQL上のデータベースにアクセスできる状態です。
(MySQLのインストール時の選択肢をすべてYesにしていれば、リモートからrootでは接続できない状態になっています。)

rootユーザーは最も強い権限を持っているため、一般的に通常の運用時に使用しません。
そこで、使用者ごとに必要な権限のみを付与したユーザーを作成し、自身のパスワードでログインしてアクセスします。

本記事における、ほかのデバイスからの接続テストでも、最も権限の低いユーザーを作成してテストを実施します。

WSL2でMySQLサーバーを起動させた状態で下記のコマンドを実行し、rootユーザーでログインします。

bash
sudo mysql -u root -p

テストに使うユーザーネームとパスワードを決めて、下記のコマンドを実施します。

mysql
CREATE USER '(ユーザーネーム)'@'(IPアドレス)' IDENTIFIED BY '(パスワード)';
  • すべて''は必要
  • '(IPアドレス)'は特別に指定しない場合は'%'でOK

参考:MySQL | ユーザーを作成する(CREATE USER文)

登録後、exitコマンドでMySQLからログアウトし、下記コマンドを実行し、パスワードを入力してログインできるかを確認します。

bash
sudo mysql -u (ユーザーネーム) -p

ログインできていれば、正しくユーザーを作成できています。

Windowsでポートを開放する

次に、WindowsマシンからWSL2に接続するために、

下記サイトの

  • 1.WindowsマシンからWSL2に接続するための設定を行う

通りに実行しましょう。

wsl2 で立てたサーバーにローカルネットワーク内の他の端末からアクセスする #Network - Qiita

上記サイトのpowershellスクリプトの記述コードのうち

ps1
$ports=@(22,3000,18000);

を、MySQLのデフォルトのポート番号である

ps1
$ports=@(3306);

に書き換えましょう。

ps1ファイルを実行後、winPCのIPでアクセスできるかを確かめます。

WSL2でサーバーを再起動します。

bash
sudo systemctl restart mysql

winPCで下記コマンドを実行し、IPv4アドレスを控えます

cmd
ipconfig

winPCでMySQL WorkBenchを立ち上げ、Database -> Manage Server Connectionsを選択し、下記の設定を打ち込んだ後、Test Connectionを実行します。

  • Hostname: (winPCのIPv4アドレス)
  • Port: 3306
  • Username: (登録したユーザーネーム、root以外)

接続テストに成功すればOKです。

ただし、ポートフォワーディングの設定をすると、WSL2で起動したサーバーにlocalhostでアクセスできなくなります。
再度localhostで接続したい場合は、下記サイトの
ポートフォワードの設定を削除する
通りに、ポートフォワーディングの設定を削除しましょう。

参考:wsl2 で立てたサーバーにローカルネットワーク内の他の端末からアクセスする #Network - Qiita

ほかのデバイスからアクセスする

ここまでくればサーバー側からの設定は完了したので、ほかのデバイスの操作に移ります。

今回はWindows 11のMySQL WorkBenchから接続する場合を例に挙げて説明します。

ほかのデバイスにMySQL WorkBenchをインストールします。

  • サーバー側のMySQLのバージョンと合ったものを、下記サイトからインストールしてください。
    MySQL :: Download MySQL Workbench
  • 詳しいインストール方法は、## WSL2でUbuntuにMySQLをインストールの項で実施しているので省略します。

ほかのデバイスでMySQL WorkBenchを立ち上げ、Database -> Manage Server Connectionsを選択し、下記の設定を打ち込んだ後、Test Connectionを実行します。

  • Hostname: (winPCのIPv4アドレス)
  • Port: 3306
  • Username: (登録したユーザーネーム、root以外)

接続テストに成功すれば完了です。お疲れさまでした。

2
0
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
2
0