2026年7月21日

2026年7月21日

MySQL Workbenchでリモートサーバーに接続する方法(SSH経由・直接接続)

MySQL Workbench は、MySQL が公開している GUI の管理ツールです。手元の PC に入れて、サーバー上の MySQL に接続し、SQL の実行、テーブルの設計、ユーザー管理などを行えます。

この記事では、レンタルサーバーや VPS 上の MySQL に Workbench から接続する方法を説明します。接続方法は2つあり、安全さが大きく違います。

方法 仕組み サーバー側の変更
Standard TCP/IP over SSH(おすすめ) SSH でサーバーに入り、サーバーの中から MySQL に接続する ほぼ不要。3306番は外に開けない
Standard TCP/IP(直接接続) インターネット越しに MySQL の 3306番へ直接接続する bind-address の変更、接続元を限ったユーザー、ファイアウォールの設定が必要

SSH でログインできるサーバーなら、SSH 経由を選んでください。MySQL のポートをインターネットに公開しないで済みます。

サーバー側の確認は、2026年11月時点の Ubuntu 24.04 と、その標準パッケージの MySQL 8.0 で行っています。Workbench の画面項目は MySQL 公式マニュアル(MySQL Workbench Manual)の表記に合わせています。

ステップ1:Workbench を入れる

MySQL 公式のダウンロードページ(https://dev.mysql.com/downloads/workbench/)から、使っている OS 用のインストーラーを入手します。2026年11月時点の最新版は 26.10.0 で、Windows・macOS・Debian 系 Linux 向けなどのパッケージが提供されています。Windows 版は .NET Framework と Visual C++ 再頒布可能パッケージを必要とします(ダウンロードページに記載があります)。

Workbench は自分の PC に入れるアプリです。接続先のサーバーに入れる必要はありません。

ステップ2(おすすめ):SSH 経由で接続する

サーバー側の準備

SSH でサーバーにログインできることを、ターミナルで先に確かめておきます。

ssh ユーザー名@サーバーのアドレス

Workbench は SSH でサーバーに入ったあと、サーバー内部から 127.0.0.1 の MySQL に接続します。そのため、MySQL のユーザーは「サーバー内からの接続」として作ります。

sudo mysql
CREATE USER 'wbuser'@'localhost' IDENTIFIED BY '強いパスワード';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP ON wpdb.* TO 'wbuser'@'localhost';

wpdb は操作したいデータベース名に置き換え、権限は作業に必要なものだけにします。Ubuntu 24.04 の MySQL 8.0 で確認したところ、Workbench と同じく 127.0.0.1 へ TCP で接続した場合も 'wbuser'@'localhost' のアカウントで認証されました。環境によって localhost で一致しない場合は、'wbuser'@'127.0.0.1' のアカウントを作ってください。権限の考え方は MySQLのユーザーと権限の設定 で詳しく説明しています。

Workbench での設定

  1. Workbench のホーム画面で「MySQL Connections」の横の「+」をクリックし、「Setup New Connection」を開きます。
  2. 「Connection Name」に分かりやすい名前を付けます。
  3. 「Connection Method」で Standard TCP/IP over SSH を選びます。
  4. 「Parameters」タブに次のように入力します。
項目 入力する値
SSH Hostname サーバーのアドレス。SSH のポートが22番以外なら example.com:10022 のように付ける
SSH Username SSH のユーザー名
SSH Password / SSH Key File 鍵でログインしているなら秘密鍵のファイルを指定する
MySQL Hostname 127.0.0.1(サーバーから見た MySQL の場所)
MySQL Server Port 3306
Username 上で作った MySQL のユーザー(例: wbuser)
Password 欄のボタンで Workbench のパスワード保管庫に保存するか、空欄にして接続時に入力する
  1. 「Test Connection」をクリックし、成功のメッセージが出たら「OK」で保存します。

初めて接続するサーバーでは、SSH のホスト鍵の指紋(fingerprint)を確認するダイアログが出ます。サーバーで ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub を実行して表示される値と一致することを確かめてから受け入れてください。

SSH の鍵について注意が2つあります。

  • PuTTY 形式(.ppk)の鍵はそのままでは使えません。 PuTTYgen で OpenSSH 形式に変換してから指定します(公式マニュアルに記載があります)。
  • 鍵にパスフレーズを付けている場合は、接続時にパスフレーズを求められます。

SSH のポート転送の仕組みは SSHポートフォワーディング(トンネル)の使い方 で説明しています。

ステップ3:直接 TCP/IP で接続する(SSH が使えない場合)

SSH が使えない環境や、社内ネットワークで MySQL に直接つなぐ構成で使う方法です。インターネット越しに使う場合は、接続元の IP を固定で限定できることが前提です。

MySQL が外部からの接続を受け付けるようにする

Ubuntu の MySQL 8.0 は、初期状態で 127.0.0.1 からの接続しか受け付けません。

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# 127.0.0.1 から、サーバーの IP(またはすべてのインターフェース 0.0.0.0)に変える
bind-address = 0.0.0.0
sudo systemctl restart mysql
sudo ss -tlnp | grep 3306

0.0.0.0:3306 で待ち受けていれば変更できています。MariaDB の場合は設定ファイルが /etc/mysql/mariadb.conf.d/50-server.cnf になります。

接続元を限ったユーザーを作る

CREATE USER 'wbuser'@'203.0.113.10' IDENTIFIED BY '強いパスワード';
GRANT SELECT, INSERT, UPDATE, DELETE ON wpdb.* TO 'wbuser'@'203.0.113.10';

203.0.113.10 は自分の接続元のグローバル IP に置き換えます。ホストに '%'(どこからでも)を使うのは避けてください。

古い解説によくある次の書き方は、MySQL 8.0 以降では構文エラー(ERROR 1064)になります。

-- MySQL 8.0 以降では動かない(5.7 までの書き方)
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

ユーザーの作成(CREATE USER)と権限の付与(GRANT)は別の文に分けます。また、GRANT や CREATE USER で変更した権限はすぐに反映されるので、FLUSH PRIVILEGES は不要です。全データベースへの全権限と WITH GRANT OPTION を、リモート接続用のユーザーに付けるのは避けてください。

ファイアウォールで接続元を限る

sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp
sudo ufw status

3306番を誰にでも開ける sudo ufw allow 3306 は使わないでください。クラウドの VPS では、サーバー外側のファイアウォール(セキュリティグループなど)でも同じ制限が必要な場合があります。UFW の IP 指定は UFWで特定のIPを許可・拒否する方法 を参照してください。

Workbench での設定

「Connection Method」を Standard TCP/IP にし、「Hostname」にサーバーのアドレス、「Port」に 3306、「Username」に作ったユーザーを入れます。

「SSL」タブの「Use SSL」は、初期値が「If available」(使えれば暗号化、できなければ暗号化なしで接続)です。インターネット越しの直接接続では「Require」にして、暗号化できないときは接続しないようにします。Ubuntu の MySQL 8.0 は初期状態で自己署名の証明書を作るので、「Require」で接続できます。サーバー証明書の検証まで行う「Require and Verify CA」「Require and Verify Identity」を使うには、CA の証明書を用意して「SSL CA File」に指定します。

うまくいかないとき

表示・症状 主な原因と確認すること
Can't connect to MySQL server on '…' (10060) などのタイムアウト 直接接続で、ファイアウォールが 3306番を通していないか、bind-address が 127.0.0.1 のまま
Access denied for user 'wbuser'@'…' ユーザーのホスト部分と実際の接続元が一致していない、またはパスワード違い。メッセージの @ 以降が、サーバーから見た接続元
Host '…' is not allowed to connect to this MySQL server その接続元に対応するユーザーが存在しない
SSH 経由で SSH の認証に失敗する SSH Username・鍵の指定を確認。.ppk 形式の鍵は OpenSSH 形式に変換する
SSH 経由で MySQL の認証に失敗する ユーザーを '…'@'localhost' または '…'@'127.0.0.1' で作ったか確認する

サーバー側の接続設定については MySQLにリモート接続する設定 も参考にしてください。

まとめ

  • SSH でログインできるサーバーなら、Connection Method を Standard TCP/IP over SSH にし、MySQL Hostname を 127.0.0.1 にします。3306番を外に開ける必要はありません。
  • 直接接続する場合は、bind-address の変更、接続元 IP を限ったユーザー、ファイアウォールでの IP 制限、SSL の「Require」をそろえます。
  • MySQL 8.0 以降では GRANT … IDENTIFIED BY は使えません。CREATE USER と GRANT に分け、権限は必要なものだけにします。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲