はじめに
無料で使えるデータベースのうち、MySQLはとても使いやすく人気があるので多くの人に使われています。
リモートサーバー上に構築したMySQLのデータを見たいときに、ローカルコンピューターからリモートサーバーに接続し、リモートサーバー上でMySQLに接続する方法があります。しかし、この方法を毎回行うのは面倒ですし、SQLの実行結果がテキストベースなのでわかりにくいという欠点があります。
MySQL Workbenchというデータベース設計ツールを使えば、簡単にリモートサーバー上のMySQLに接続できます。
MySQL Workbenchとは?
MySQL Workbenchは、SQL開発、管理、データベース設計、作成、および保守をMySQLデータベースシステムの単一の統合開発環境に統合するビジュアルデータベース設計ツールです。 ウィキペディア(英語)
Mac向けのMySQL対応データベース設計ツールは他にphpMyAdminやSequel Proがありますが、MySQL Workbenchは公式が提供しているだけあって最も使いやすいツールだと思います。ダークモードにも対応しています。
前提となる構成例
リモートサーバー上にMySQLが構築済みで、リモートサーバーにはローカルコンピューターからSSH接続できる状態であるとします。
MySQL WorkbenchでMySQLに接続する
MySQL Workbenchのインストール
MySQL Workbenchの公式サイトにアクセスします。
「ダウンロードはこちら」をクリックします。
「Download」ボタンをクリックします。
「Login」ボタンをクリックします。
「ユーザー名」と「パスワード」を入力し、Oracleプロファイルにサインインします。
「Download Now」ボタンをクリックします。
ダウンロードが完了したらファイルを開き、MySQL Workbenchをアプリケーションに追加します。
これでMySQL Workbenchがインストールできました。
MySQL Workbenchの設定
SSH接続情報の事前確認
MySQL Workbenchの設定で必要となるリモートサーバーへのSSH接続情報を事前に確認しておきます。
$ cat ~/.ssh/config
Host remote-server
HostName xxx.xxx.xxx.xxx
User user
Port 10022
IdentityFile ~/.ssh/remote-server/id_rsa
MySQL接続の作成
MySQL Workbenchを起動します。真ん中あたりにある「MySQL Connections」の横の「+」ボタンをクリックします。
新しい接続の作成ウインドウで、「Connection Method」を「Standard TCP/IP over SSH」に変更します。
各パラメーターを以下の通り設定します。
パラメーター | 設定値 |
---|---|
Connection Name | 任意の名前 |
SSH Hostname | リモートサーバーのIPアドレスとポート番号 |
SSH Username | SSH接続のユーザー名 |
SSH Password | SSH接続のパスワード |
SSH Key File | SSH接続の鍵ファイル |
MySQL Hostname | 127.0.0.1 |
MySQL Server Port | 3306 |
Username | root |
Password | MySQLのパスワード |
Default Schema | データベース名 |
各パラメーターが入力できたら「Test Connection」ボタンをクリックします。表示されたウインドウで「Password」を入力します。
テスト接続が成功すると以下のように表示されます。
MySQL接続設定が作成できました。作成した接続設定はMySQL Workbenchに保存されているので、次からはその接続設定をクリックするだけでリモートサーバー上のMySQLに接続できます。
接続できない場合
正しく設定したにもかかわらずMySQLに接続できない場合があります。最後のテスト接続を行うとエラーメッセージが表示されるという場合、以下の手順を参考にしてみてください。
リモートサーバーにSSH接続します。
$ ssh remote-server
コマンドラインからMySQLにログインします。
$ mysql -uroot -p
Enter password:
...
mysql>
現在のユーザー権限を確認します。
mysql> SHOW GRANTS;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)
ALL PRIVILEGES ON *.* TO root@localhost
というユーザー権限は、「接続元がlocalhostのrootユーザーはすべての権限を持っている」という意味になります。
MySQL Workbenchでは、まずリモートサーバーにSSH接続し、リモートサーバーから自身の中にあるMySQLに接続しています。通常であればroot@localhost
というユーザー権限だけで接続できるはずです。しかし、環境や設定によっては接続元が外部のユーザー権限でないと接続エラーになることがあります。
ユーザー権限を追加するには以下のコマンドを実行します。
mysql> GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected, 1 warning (0.00 sec)
コマンド | 意味 |
---|---|
GRANT |
権限を与える |
ALL |
すべての権限(CRUD) |
*.* |
全データベースの全テーブル |
root@'%' |
すべての接続元のrootユーザー('%'はワイルドカードで、使用する場合は''で囲む) |
IDENTIFIED BY |
rootユーザーの場合はパスワードが必須 |
上記のコマンド例はかなりセキュリティリスクの高いユーザー権限ですので、実際には権限や対象のデータベースを絞ったり、root以外のユーザーにすることをおすすめします。
mysql> SHOW GRANTS FOR root@'%';
+-------------------------------------------+
| Grants for root@% |
+-------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' |
+-------------------------------------------+
1 row in set (0.00 sec)
ユーザー権限が追加されました。
ユーザーやユーザー権限の削除
間違って必要ないユーザーやユーザー権限を作成してしまった場合のために、それらを削除するコマンドも載せておきます。
ユーザーの削除。
mysql> DROP USER root@'%';
ユーザー権限の削除。
mysql> REVOKE ALL ON *.* FROM root@'%';
このコマンドはユーザー権限だけ削除されるため、ユーザーは残ります。USAGE
はユーザー権限がなにもないことを意味します。
mysql> SHOW GRANTS FOR root@'%';
+----------------------------------+
| Grants for root@% |
+----------------------------------+
| GRANT USAGE ON *.* TO 'root'@'%' |
+----------------------------------+
1 row in set (0.01 sec)
まとめ
MySQL Workbenchのインストールと接続設定の作成について解説しました。
MySQL Workbenchは直感的にわかりやすいUIで、非常に使い勝手のいいデータベース設計ツールです。MySQLは使っているけどMySQL Workbenchは使ったことがないという人は参考にしていただければと思います。