ここ最近、トラブルシューティングなどに時間を費やしたので、自戒の意味で。
コマンドラインからはSSH接続できるのに、MySQLクライアントからは接続できない
という事象にぶちあったた。そこに至るまでに・・・。
- Vagrantを使って、公式配布されているboxから仮想サーバを作成しVirtualbox動かす
- 1.の仮想サーバ内にhttpd,PHP,MySQLなどをインストールし、新しいboxとして出力した
- 2.で出力したboxをVagrantに取り込み、そこから新しいプロジェクト?を生成した。
- 3.のプロジェクトにSSH接続などを実施した
- そこに、SequelProで接続しようとしたら、ポート転送に失敗した。
といったことがありました。
一つ一つは多くの人が経験してると思う。でもこの組み合わせはそんなにないだろう
上記の 1. から5. にかけて、一つ一つのことは、多くの人が試みて、その内容をインターネット上に公開しているだろう。
ただし、上記に取り上げた内容そのままにやっている人はそれほどいないだろう。もしかしたら私だけかもしれない。
ネット上の大海に、求める答えそのものが存在する可能性は天文学的数字・・・だと思う
環境がバラバラだったり、断片的な情報は大量にヒットするはずだ。
だが、それが私の(あなたの)直面する問題にピッタリ合致するとは限らない。
多くの場合、複合的な問題の一部にはヒットするくらいで、残りの部分には無効な内容・・・というケースは山ほど経験したことと。
今回のMySQLクライアントで接続できない問題に戻ると・・・。
SSHポート転送が失敗しました
SSH経由のポート接続が拒否されたため、ホスト 192.168.xxx.yyy に接続できませんでした。
MySQLホストがTCP/IP接続を許可する設定でかつ、トンネリングする〜(中略)
また、ポートが正しく必要な権限があるかも確認してください。
エラー情報にSSHデバッグログが表示されており、(中略)
MySQLの応答: Lost connection to MySQL server at 'reading initial communication packet' system error: 0
なお、SSHデバッグログを見ると
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Connection to port 65189 forwarding to 127.0.0.1 port 3214 requested.
debug1: channel 4: new [direct-tcpip]
channel 4: open failed: connect failed: Connection refused
debug1: channel 4: free: direct-tcpip: listening port 65189 for 127.0.0.1 port 3214, connect from 127.0.0.1 port 65192 to 127.0.0.1 port 65189, nchannels 5
debug1: Connection to port 65190 forwarding to 192.168.xxx.yyy port 3214 requested.
debug1: channel 4: new [direct-tcpip]
channel 4: open failed: connect failed: Connection refused
debug1: channel 4: free: direct-tcpip: listening port 65190 for 192.168.xxx.yyy port 3214, connect from 127.0.0.1 port 65194 to 127.0.0.1 port 65190, nchannels 5
問題。
なぜ、SSHポート転送ができなかったのでしょうか?
答えは3つあった。中には明らかに固有の問題もあった。
- MySQLのユーザ設定で、サーバ外からの接続に対応したものがなかった
- iptablesで許可していなかった
- そもそも、ポートの設定が正しくなかった
3つの項目のうち1.に関しては、よくある話なので言及しているケースも多い。2.に関しても、MySQLy用のポートを開通させることに関しては1.ほどでないにせよ、言及があるはず。
だが3.のポート設定が間違っていた。というケースに対応したネット上の情報は、それほどないはずである。
だから・・・
ネット上には、ピッタリ合うような解決のための情報が転がっているわけではない。
この手の技術情報を公開するときには、実施環境とその環境設定がどのような影響を及ぼすかといったこと。何を実現したかったのかを記載するようにしよっと。