はまりました。localhostを使うと、localhostのMySQLへアクセスしてしまいます。これを回避するためには、127.0.0.1を使います。例えば、remote.host.comの3306ポートで起動されているMySQLへのポートフォワードを提供するためには、下記のようにします。
ssh -2 -N -f -L 13306:127.0.0.1:3306 remote.host.com
これで、SSHを動作させているホストから、jdbc://mysql/localhost/dbname などでremote.host.comへアクセスできます。注意点としては、remote.host.com側ではlocalhost.localdomain経由でアクセスがきたというように処理されていたので、アクセス権限を与えておく必要があります。もしかしたら、環境依存かもしれません。