Failed to Connect to MySQL at localhost: 3306 through SSH tunnel

はじめに

MySQL Workbenchに備わっている sshトンネリング機能を使い、手元のPC/MacからリモートのサーバのDBに繋ぐ方法を紹介。

やりたいこと

手元の環境から、MySQL Workbenchがserverにつなぎに行き、そのサーバ内のMySQLに接続させたい。

workbenchの設定

Connection Methodを “` Stadard TCP/IP over SSH “` を選択。諸々入力する。

問題発生

つながらない

原因と対処

mysql内に作成したユーザの接続元を
127.0.0.1ではなく、localhostとして登録していた。 意味的には同じように思えるが、mysqlの場合はこの辺厳密に区別されるらしい。

対処

接続元を127.0.0.1にしてユーザを再作成

GRANT USAGE ON *.* TO 'tsukada'@'127.0.0.1' IDENTIFIED BY 'password';
GRANT select ON `database`.* TO 'tsukada'@'127.0.0.1' ;

MariaDB [(none)]> select user,host from mysql.user;
+----------------+-----------+
| user           | host      |
+----------------+-----------+
| tsukada | 127.0.0.1 |
+----------------+-----------+
14 rows in set (0.00 sec)

MariaDB [(none)]> 

問題なく接続できるようになった

備考

リモート接続の際、この本の第三章が非常に良くできている。

第3章 一歩進んだOpenSSHの使い方
 3-1 TCPポートフォワード
 3-2 プロキシと多段SSH
 3-3 SSHのセッションをコントロールする

第三章だけでも読む価値はある。とてもおすすめ。