日: 2018年10月19日

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

    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のセッションをコントロールする

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