概要
AWS BatchでRDSに接続するコマンドを実行したらCan't connect to MySQL server...
になりました。本記事ではその原因と解決方法を記載します。
エラー内容と原因
エラーは以下の通りです。
ERROR 2002 (HY000): Can't connect to MySQL server on 'xxxx.cluster-xxxxxx.ap-northeast-1.rds.amazonaws' (115)
MySQLクライアントがMySQLサーバーへの接続を試みる際に問題が発生しているよう。
調べてみると、以下の原因が考えられるとのこと。
①エンドポイントが正しくない
→ 実際のRDSインスタンスのエンドポイントと一致しているか確認しましたが正しかったです。ホスト名、ポート番号も確認。
②サブネットルーティング
→ サブネット周りの問題です。ジョブが実行されているサブネットが、RDSインスタンスがあるVPCと同じかどうか。ルートテーブルが正しく設定されているかどうか。確認しましたが、問題なかったです。ネットワークACLでブロックしていないかどうかも。
③RDSインスタンス
→ なんらかの理由でRDSインスタンスが起動していない、または異常が発生していることも考えられます。その場合は再起動すると良いようですが、特に問題なかったです。
④セキュリティグループ
→ セキュリティグループの設定が正しくない場合、接続がブロックされるとのこと。原因はこれでした。つまり、ポートがブロックされていたり、ソースが制限されていると、上述のエラーが発生します。
解決方法
RDSのセキュリティグループのインバウンドルールに、Batchが接続するのに必要なポートとソース(セキュリティグループ)を正しく設定したら、エラーが解決しました。