私と私の猫の他は誰でも隠し事を持っている

野良プログラマ発、日々のアウトプット

手元の phpMyAdmin からリモートホストのデータベースを SSH トンネル経由で操作する

ウェブ開発では、かつては MySQL サーバを立てたら次は同サーバ内か同一 LAN 内に phpMyAdmin のセットアップをというのが定石でしたが、コンテナ時代の今では phpMyAdmin もデスクトップアプリと同様の手軽さで利用できるようになりますた。という訳で、手元の開発用マシンで phpMyAdmin を Docker コンテナで起動して、リモートホストMySQL サーバに SSH ポートフォワード経由で繋いでしまおうという小ネタです。

まず、DB を立ててあるリモートホスト foo@bar.net との間にトンネルを掘ります。トンネルの入り口は localhost じゃなくて Docker コンテナ内から接続できるようにローカル IP (例では 192.168.12.34)にしておくのがミソ。

ssh foo@bar.net -N -L 192.168.12.34:3306:localhost:3306

phpMyAdmin純正イメージを使って、コンテナを起動します。環境変数 PMA_HOST で DB サーバアドレスを指定できます。

docker run --rm --name pma -d -e PMA_HOST=192.168.12.34 -p 8080:80 phpmyadmin/phpmyadmin

あとは http://localhost:8080/ から phpMyAdmin 使い放題、と。

受注開発で DB は用意されていても必ずしも phpMyAdmin が使えるとは限らない等、割とよくあるユースケースじゃないかと思うのですが、不思議にネットでソリューションが見つからなかったので書いてみました。