web-dev-qa-db-ja.com

Amazon RDS MySQLに接続できません

LinuxマシンからRDS MySQLに接続しようとしています。 telnetで接続をテストすると、telnetセッションは成功しますが、次のコマンドでdbに接続しようとすると

mysql -h hostname -uusername -ppassword

にアクセスできず、コマンドがスタックします。 RDS構成では、パブリックアクセシビリティはyesに設定されており、すべてのアドレスからのアクセスを許可する受信ルールをセキュリティグループに追加しました。

この問題が解決すると、現時点では機能しないjdbcを介して接続できると思います。

ヘルパーに感謝!

update:実行したコマンドの出力を添付: mysql command output

telnet command output

2
Anna Hecht

MySQL DBインスタンスに接続できない場合、新しいDBインスタンスへの接続が失敗する一般的な2つの原因は次のとおりです。

  1. MySQLアプリケーションまたはユーティリティが実行されているデバイスまたはAmazon EC2インスタンスからの接続を許可しないセキュリティグループを使用してDBインスタンスが作成されました。 DBインスタンスがVPCで作成された場合は、接続を承認するVPCセキュリティグループが必要です。 DBインスタンスがVPCの外部で作成された場合は、接続を承認するDBセキュリティグループが必要です。このページを参照してください VPCおよびRDS

  2. DBインスタンスはデフォルトポートの3306を使用して作成されており、会社にはファイアウォールルールがあり、会社のネットワーク内のデバイスからそのポートへの接続をブロックしています。この失敗を修正するには、別のポートでインスタンスを再作成します。

1
asktyagi

ソケット接続テストは成功したが、mysqlクライアントに接続できないため、netstatの出力を見て、接続の状態を確認します(x.x.x.xをRDSインスタンスの実際のIPアドレスに置き換えます)。

netstat -an | grep x.x.x.x

MySQLクライアントを使用しているときに「SYN」状態が表示される場合は、MTUの問題が発生している可能性があります。

これが書かれている時点では、RDSはPMTUDに使用されるICMPパケットをサポートしていない可能性があります( https://en.wikipedia.org/wiki/Path_MTU_Discovery#Problems_with_PMTUD )。これは、ClassicLinkを介してクラシックec2インスタンスからVPCにあるRDSまたはRedShiftにアクセスしようとしている場合に問題になる可能性があります。次の方法でMTUを下げてから、もう一度テストしてください。

Sudo ip link show
# take note of the current MTU (likely 1500 or 9001)
Sudo ip link set dev eth0 mtu 1400

低いMTUが機能した場合は、必ずAWSカスタマーサポートに連絡し、RDSインスタンスに接続しようとしているときにMTUの問題が発生していることを伝えてください。これは、TCP=パケットがトンネリング用のカプセル化でラップされている場合に発生する可能性があり、その結果、パケットデータ/ペイロードの使用可能なMTUが低くなります。MTUを低くしても、ラップされたパケットは依然として制限内に収まります。

機能しない場合は、MTUをデフォルトに戻し、AWSのサポートにトラブルシューティングを依頼してください。

1
Nikhil Dashore