[MySQL Workbench] --> [sshd] --> [mysqld]
といった構成のネットワークで、sshd には外からつながるけど、mysqld には外からつなげない場合に、MySQL Workbench でどうつなぐか、という話です。突き詰めていくと SSH の話になるのですが。
「mysql workbench ssh」といったキーワードでググったら http://php-tips.com/server/2011/05/mysql-workbench-with-ssh-connection がヒットしたんですが、パッと見このサイトは
[MySQL Workbench] --> [sshd, mysqld]
という構成にしか通用しないように見えました。が、先述した sshd と mysqld が別々に立っている構成でも通用するようです。
ただし、注意点として、ポートフォワーディングを有効にしてやる必要があります。 .ssh/authorized_keys に no-port-forwarding が付いてたり、/etc/ssh/sshd_config で AllowTcpForwarding no とされていたりするとアウトです。参考にしたサイトを見ただけではここが分からず、しばらくハマってしまいました。
SSH 周りの問題だろうなーと思って /var/log/secure を見たら
Received request to connect to host xxxxx.example.com port 3306, but the request was denied.
といったログが出てたので、「but the request was denied.」でググったら http://wiki.metawerx.net/wiki/SSHTunnelTroubleshooting がヒットして解決に至ったわけです。
ちなみに、実際どういうシチュエーションでこれにハマったかというと、Amazon VPC 内の RDS に MySQL Workbench でつなぎたいなーという話からでした。