経緯
- 学習用にOSなしの中古PCを購入してLinux(Ubuntu)をインストールした
- 何となくWindows端末→Linux端末にリモート接続できるようにした
- ある時、MySQLの環境構築を実施
- SQLで便利な機能がないかを発掘していたときがあった
- データベースやテーブルが徐々に増えたときに「そういえばクライアントツール(以下、GUIツールと記述)を使っていなかったな」とふと思う
- 「Windows端末のGUIツール→Linux端末のMySQLにリモート接続」って頑張ればできるんじゃない?と興味が湧いたので実現に向け行動を開始
GUIツールの選定
外せない条件
無料で使用できること
候補
候補は以下の3つのどれか
- Beekeeper Studio
- A5:SQL Mk-2
- DBeaver
個人的には「Beekeeper Studio」「DBeaver」の二択
好みなのは「Beekeeper Studio」
使いやすそうなのは「DBeaver」
そんな印象
ツール決定:DBeaver
決め手は2つ
- ER図が見れる
- 画面の雰囲気がどことなく「SQL Server」に似ていて親しみを覚えた
各種設定について
登場するもの
- PC1: Linux(Ubuntu)
- リモート接続される側の端末
- MySQL環境はこちらにある
- バージョン: 22.04 LTS
- PC2: Windows
- リモート接続する側の端末
- GUIツールの「DBeaver」はこちらにインストールされている
やりたいこと
「PC2:DBeaver→PC1:MySQL」のリモート接続を確立させて、DBeaverの画面上でDB操作を行える状態にする
Linux端末の設定
するべきことはこちら
- IPアドレスを把握する
- MySQLのポート番号を把握する
- MySQLの設定ファイルを編集
- リモート接続用のMySQLユーザを追加
IPアドレスを把握する
DBeaverで接続設定するときに必要になる
ip -4 a
このコマンドを実行すれば確認できる
MySQLのポート番号を把握する
基本的には「3306」だと思うが例外もあり得るので調べ方を1つ記載
DB接続したあとに
SHOW VARIABLES LIKE 'port'
このコマンドを実行するとポート番号が可能
-- 実行例
mysql> SHOW VARIABLES LIKE 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.01 sec)
MySQLの設定ファイルを編集
MySQL接続を許可するIPアドレスを管理している項目があるのでそれを編集する
※ちなみに筆者はここに辿り着くまでに結構遠回りしてしまった
対象ファイル: /etc/mysql/mysql.conf.d/mysqld.cnf
変更箇所: bind-address = xxx.xxx.xxx.xxx
初期設定では「bind-address = 127.0.0.1」となっていて、自端末からの接続のみ許可する状態
これを他のIPアドレスからの接続も許可するように変更する
# ファイル編集
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 変更前
bind-address = 127.0.0.1
# 変更後
bind-address = 0.0.0.0
今回はIPアドレスを「0.0.0.0」に変えた
どこからの接続でも許可するという意味合い
IPアドレスの範囲を指定することもできるので使用用途に合わせて適宜設定値は変えるべき
リモート接続用のMySQLユーザを追加
DBeaverでMySQL接続するときに使うユーザを追加する必要がある
ユーザ追加権限のあるユーザ(rootとか)でMySQLに接続して
CREATE USER '[user]'@'%' IDENTIFIED BY '[password]'
GRANT SELECT, INSERT, DELETE, UPDATE ON [databese].* TO '[user]'@'%';
このコマンドを順番に実行する
リモート接続用のこのユーザには全権限は与えず最低限の権限を付与した
@以降の'%'は任意のIPアドレスを意味する
このユーザを利用すれば外部からのMySQLも可能となる
これでLinux端末側の設定は終わり
Windows端末の設定
するべきことはこちら
- DBeaverの各種設定
こちらは接続する側なのでGUIツールの設定だけで良い
DBeaverの各種設定
- DBeaverを起動
- 画面上部の「データベース」を開く
- 「新しい接続」を選択
- 「MySQL」を選択して次へ
- 接続設定画面
Server Host: 「Linux端末の設定」で確認したIPアドレス
Port: 「Linux端末の設定」で確認したポート番号
Database: 接続対象のデータベース名
ユーザ名: 「Linux端末の設定」で追加したユーザ
パスワード: 「Linux端末の設定」で追加したユーザのパスワード
その他: 初期値のままでOK - 入力が終わったら画面左下の「テスト接続」を押下
- 接続成功すれば設定は完了
これで設定はおわり
まとめ
「WindowsのSQLクライアントツール→LinuxのMySQLのリモート接続を確立する」という目的で環境設定を進めた。
リモート接続の設定が上手くいってDBeaverでテーブルやレコードが表示されたとき、
「おお!」と少しテンションが上がったのはここだけの話。
この経験を活かす機会はあまりなさそうだが、知ってて損はない知識だと思う。