Не удается подключиться к Amazon RDS MySQL

я пытаюсь подключиться к RDS MySQL с Linux-машины. Когда я проверяю соединение с помощью telnet, сеанс telnet проходит успешно , но когда я пытаюсь подключиться к базе данных с помощью следующей команды

mysql -h hostname -uusername -ppassword

, я не могу получить доступ и команда застревает. В конфигурации RDS общедоступность установлена ​​на «да», и я добавил входящее правило в группу безопасности, разрешающее доступ со всех адресов.

Я предполагаю, что когда эта проблема будет решена, я смогу подключиться через jdbc, который сейчас тоже не работает.

Спасибо помощникам!

обновление:прикрепление выходных данных команд, которые я запускал: mysql command output

telnet command output

1
задан 26 March 2020 в 11:28
2 ответа

Если вы не можете подключиться к своему экземпляру БД MySQL, две распространенные причины сбоев подключения к новому экземпляру БД:

  1. Экземпляр БД был создан с использованием группы безопасности, которая не разрешает подключения с устройства или Amazon. Экземпляр EC2, в котором запущено приложение или утилита MySQL. Если экземпляр БД был создан в VPC, он должен иметь группу безопасности VPC, которая разрешает подключения. Если экземпляр БД был создан за пределами VPC, он должен иметь группу безопасности БД, которая разрешает подключения. См. эту страницу VPC и RDS

  2. Экземпляр БД был создан с использованием порта по умолчанию 3306, и правила брандмауэра вашей компании блокируют подключения к этому порту с устройств в сети вашей компании. Чтобы исправить эту ошибку, заново создайте экземпляр с другим портом.

1
ответ дан 31 March 2020 в 09:16

Поскольку проверка соединения с сокетом прошла успешно, но вы не можете подключиться к клиенту mysql, взгляните на вывод netstat, чтобы узнать, в каком состоянии находится соединение (замените xxxx фактическим IP-адрес экземпляра RDS):

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

Если вы видите состояние «SYN» при использовании клиента MySQL, возможно, вы столкнулись с проблемой MTU.

RDS на момент написания может не поддерживать пакеты ICMP, используемые для PMTUD ( https://en.wikipedia.org/wiki/Path_MTU_Discovery#Problems_with_PMTUD ). Это может быть проблемой, если вы пытаетесь получить доступ к RDS или RedShift, находящимся в VPC, из классического экземпляра ec2 через ClassicLink.Попробуйте уменьшить 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 за помощью и упомяните, что вы видите проблему MTU при попытке подключиться к своему экземпляру RDS. Это может произойти, если пакеты TCP обернуты инкапсуляцией для туннелирования, что приведет к более низкому используемому MTU для пакетных данных / полезной нагрузки. Уменьшение MTU позволяет упакованным пакетам все еще соответствовать лимиту.

Если это не помогло, установите для MTU значение по умолчанию и обратитесь в службу поддержки AWS для дальнейшего устранения неполадок.

1
ответ дан 2 April 2020 в 10:37

Теги

Похожие вопросы