Как я могу получить доступ к базе данных MySQL на AWS RDS со своего рабочего стола? - PullRequest
0 голосов
/ 23 марта 2020

Я Java разработчик, и я написал простое Java приложение, которое создает базу данных MySQL из текстового файла. Я использую MySQL версию 8.0.19 и Java MySQL разъем 5.1.48.

Код довольно прост. Я создаю три таблицы и вставляю строки в таблицы. На моем локальном MySQL я вижу три таблицы и их содержимое, используя MySQL Workbench.

Я обращаюсь к своей локальной MySQL базе данных со следующего хоста:

jdbc:mysql://localhost:3306/bible?useSSL=false

Мой идентификатор пользователя: "root".

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

jdbc:mysql://bible-database.caaitaoyrsgq.us-east-1.rds.amazonaws.com:3306

Я немного изменил URL, чтобы защитить себя.

Когда я пытаюсь получить доступ к моей базе данных AWS RDS MySQL, я получаю следующую ошибку:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:335)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2187)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2220)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2015)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:768)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
    at com.ggl.bible.database.sql.SQL.connect(SQL.java:31)
    at com.ggl.bible.database.BuildDatabase.processBible(BuildDatabase.java:30)
    at com.ggl.bible.database.BuildDatabase.main(BuildDatabase.java:19)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.base/sun.nio.ch.Net.connect0(Native Method)
    at java.base/sun.nio.ch.Net.connect(Net.java:493)
    at java.base/sun.nio.ch.Net.connect(Net.java:482)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:339)
    at java.base/java.net.Socket.connect(Socket.java:603)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:299)
    ... 18 more
Exception in thread "main" java.lang.NullPointerException
    at com.ggl.bible.database.sql.SQL.createBibleTables(SQL.java:99)
    at com.ggl.bible.database.BuildDatabase.processBible(BuildDatabase.java:31)
    at com.ggl.bible.database.BuildDatabase.main(BuildDatabase.java:19)

Я знаю, что у меня проблема с подключением.

Я смотрел некоторые интерактивные руководства, такие как Подключение к экземпляру БД Запуск MySQL Database Engine , но я не понимаю что автор говорит мне.

Есть ли руководство для простых умов, подобных моему, которое даст мне пошаговые инструкции о том, как подключиться? Когда я говорю просто, я имею в виду:

  1. Go на веб-страницу ...
  2. Щелкните левой кнопкой мыши на ссылке, которая говорит ...
  3. Введите это в коробке рядом с ...

Спасибо за любую помощь, которую я могу получить.

Ответы [ 2 ]

1 голос
/ 24 марта 2020

Я наконец-то успешно подключился к базе данных MySQL на AWS RDS.

Теперь я лучше понимаю ответ Stargazer, потому что наткнулся на видео на YouTube, AWS RDS MySQL Настройка базы данных | Пошаговое руководство .

У меня были две основные проблемы с базой данных MySQL, которые я смог исправить, удалив экземпляр базы данных, который я создал три дня go, и создав новую базу данных. экземпляр сегодня.

  1. Моя база данных не была открыта для доступа c. Когда вы настраиваете базу данных в RDS, одним из стандартных параметров является publi c или частный доступ. Я не заметил эту опцию, когда настраивал свой первый экземпляр базы данных.

  2. Видео на YouTube показало мне, как именно добавить правило входящих в группы безопасности VP C.

  3. На странице сводной базы данных справа под заголовком Безопасность находится список групп безопасности VP C. Щелкните левой кнопкой мыши группу по умолчанию, и вы попадете на панель мониторинга EC2.

  4. В разделе «ID группы безопасности» щелкните левой кнопкой мыши идентификатор группы безопасности. Это приведет вас к веб-странице, где вы можете изменить правила входящих и исходящих сообщений. Вам нужно добавить входящее правило с вашего IP-адреса. Мое входящее правило выглядит так. Я замаскировал свой IP-адрес.

    Все traffi c Все Все 68.xxx.121.68 / 32 Мой ноутбук

В любом случае, я надеюсь, что мой вопрос и этот Ответ поможет кому-то в будущем. Все руководства, которые я прочитал в Amazon, предполагают, что вы создаете 30 экземпляров базы данных в день и знаете все эти проблемы в сети как внутри, так и снаружи. Я просто хочу написать навыки Алексы, используя Java. База данных является лишь средством для достижения этой цели.

1 голос
/ 23 марта 2020

Вам нужно будет выставить вашу базу данных на inte rnet:

1 шаг: включить inte rnet на вашем vp c

2 шаг: направить подсети вашей базы данных на интернет-шлюз

3 шаг: в опциях вашего экземпляра rds установите флажок «Доступность c», сохраните и перезапустите экземпляр

И не забудьте создать правило, разрешающее трафик c с вашего ip в группе безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...