💽

HeidiSQL SSHトンネルでMariaDBに接続する

2024/08/17に公開

はじめに

これは、表記の課題を解決した際のメモ書きで、未来の自分に宛てたものです。

環境

  • Debian Server 12.6
    • パスワードでのリモート接続は不可、SSHのみ接続可能です。
    • 3306ポートはファイアウォールで塞がれています。
    • MariaDB 10.11
      • 127.0.0.1バインドされています。
  • Windows 11 Pro
    • HeidiSQL 12.8

https://zenn.dev/tetr4lab/articles/ad947ade600764#関連記事

HeidiSQL とは

OSSのDBクライアントで、MariaDB、MySQL、Microsoft SQL、PostgreSQL、SQLiteなどに対応しています。

ホーム

https://www.heidisql.com/

リポジトリ

https://github.com/HeidiSQL/HeidiSQL

ドキュメント

https://www.heidisql.com/help.php

HeidiSQL の設定

設定

SSHで接続した後の接続設定です。

  • ネットワーク種別
    • MariaDB or MySQL (SSH tunnel)
  • Library
    • libmariadb.dll
    • WSL2のUbuntuでMySQL(8.0.39)を使用した際は、libmysql-8.4.0.dllまたはlibmariadb.dllで接続できました。
  • ホスト名
    • localhost (または127.0.0.1)
  • ユーザー、パスワード
    • DBのアカウントです。
    • 「ユーザー名とパスワードを毎回入力する」にチェックすると、空欄にできます。
      • チェック前に入力しておくと、保存されて自動入力されます。
      • 事前の入力の有無にかかわらず、毎回ダイアログが開きます。
      • なお、チェックなしで空欄にすると、「パスワードなし」な扱いになるようです。
  • ポート
    • DBの待ち受けポートです。
  • その他
    • デフォルトのままです。

SSH トンネル

SSHで接続するための設定です。

  • Use SSH tunnel
    • チェックします。
  • SSH executable
    • plink.exe
    • パスも書けます。必要ならダウンロードします。
  • SSH ホスト + ポート
    • SSHのアドレスとポートです。
  • ユーザー名、パスワード
    • SSHのアカウントです。
    • 空欄にすることで、毎回入力になります。
    • サーバがパスワード不可なので、パスワードは入力しても意味がありません。
  • SSH タイムアウト
    • デフォルトのままで大丈夫でした。
    • タイムアウト待ちが生じたときに、この時間待たされるので、エラーしない最小限が望ましいです。
  • 秘密鍵ファイル
    • PuTTY形式の秘密鍵ファイルを指定しました。
  • ローカルポート
    • これはSSH接続(時? 後?)の送出ポートらしいです。デフォルトのままにしました。

設定の保存

  • ここまで済んだら、設定を保存します。

接続

  • 「開く」を押すと、しばらくして、まずDBのアカウント(毎回入力時のみ)、次にSSHのユーザー名(未入力時)、続いて鍵のパスフェーズを聞いてきます。
    • SSHのユーザー名だけを入力していると、パスフェーズ入力時にエラーが表示されますが、その後接続できます。(パスワード接続にチャレンジしている?)
    • パスフェーズのない鍵は試していません。
  • 設定によっては、しばらく待たされます。
  • 途中でキャンセルする方法は解りませんでした。

接続に失敗する場合

  • 「SSH exited unexpected.」の場合は、SSHトンネルの設定を見直します。
  • 「Access denied for ~ (using password: YES)」の場合は、設定のDBのパスワードが書き換わっている(?)可能性があるので、再設定してみましょう。

おわりに

お読みいただきありがとうございました。

Discussion