Обнаружение ошибки 08001 при попытке подключения к базе данных

Когда я пытаюсь подключиться к экземпляру базы данных PostgreSQL, которую я создал в соответствии с руководством AWS «Создание и подключение к базе данных PostgreSQL с помощью Amazon RDS», расположенным здесь (https://aws.amazon.com/getting- start/tutorials/create-connect-postgresql-db/), я получаю сообщение об ошибке:

[08001] Попытка подключения не удалась. java.net.SocketTimeoutException: время ожидания подключения истекло.

База данных настроена на разрешение входящего и исходящего трафика на всех портах и ​​со всех IP-адресов. Я совершенно не понимаю, как заставить это работать, и обратился в службу поддержки AWS за их вкладом, но пока все, что я сделал, это следовал указаниям, предписанным руководством AWS, но безрезультатно.

Кто-нибудь знает, в чем может быть проблема?

Обновлено: я должен упомянуть, что все мои URL-адрес хоста, номер порта, имя базы данных и т. д. были правильно введены в DataGrip, поэтому ни одно из вышеперечисленных не является проблемой.

Тайм-аут подключения почти всегда является проблемой сетевого подключения. Вы пытаетесь подключиться из VPC, в котором находится экземпляр RDS, или извне? Правильно ли вы открыли группу безопасности?

Mark B 10.12.2020 21:58

Спасибо, Марк. Я пытаюсь подключиться к базе данных с моей личной машины. Я проверил группу безопасности, и оказалось, что ограничений на входящий и исходящий трафик нет.

Michael P. 10.12.2020 22:00

Сервер RDS настроен как общедоступный?

Mark B 10.12.2020 22:02

Это точно, да.

Michael P. 10.12.2020 22:43

Есть ли в подсети, в которой находится экземпляр RDS, маршрут в/из Интернета?

hephalump 11.12.2020 00:37

Я не могу сказать, если честно. Я предполагаю, что это будет выглядеть примерно как «0.0.0.0/16».

Michael P. 11.12.2020 01:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
6
9 252
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ладно, я разобрался.

Во-первых, @Mark B был прав - проблема заключалась в том, что я еще не сделал саму базу данных общедоступной через группу безопасности VPC, членом которой она была. Для этого на экране сведений о базе данных в AWS я:

  1. щелкнул (для меня это была единственная) ссылка под «группами безопасности VPC» на панели управления базой данных, которая направила меня на экран групп безопасности EC2.
  2. щелкнул ссылку группы безопасности, связанную с моей базой данных, которая направила меня на страницу сведений об этой группе
  3. нажал кнопку «Редактировать входящие правила», которая направила меня на экран «Редактировать входящие правила».
  4. нажал кнопку "Добавить правило", в результате чего появилась строка таблицы, содержащая следующие столбцы: "Тип", "Протокол", "Диапазон портов", "Источник", "Описание - необязательно"
  5. выбрал «PostgreSQL» для столбца «Тип», что привело к заполнению значений «TCP» и «5432» в столбцах «Протокол» и «Диапазон портов» соответственно, ввел IP-адрес моей машины («123.456.789.012/32» --без кавычек и круглых скобок) и оставил поле «Описание — необязательное» пустым, потому что это необязательно.

Наконец, я думаю, что забыл явно указать имя базы данных, и поэтому мои попытки ввести то, что для меня было якобы именем базы данных (то есть «база данных-1»), привели к ошибке соединения, указывающей, что «база данных-1» не существует. Итак, для простоты и простой проверки подключения к базе данных я ввел «postgres» в качестве имени базы данных в моем клиенте базы данных (в настоящее время я использую DataGrip), потому что «postgres» — это фактическое имя базы данных postgreSQL.

И это должно работать. Я уверен, что все это не представляет никакой сложности для тех, кто более опытен в AWS, но это новое для меня и, предположительно, для многих других.

Еще раз спасибо, @Mark B, за то, что направил меня по правильному пути.

Другие вопросы по теме