2016-02-24 3 views
-2

У меня была проблема здесь, возможно ли, что JDBC подключается к серверу amazon MySQL удаленно? Я поиск в Интернете для решения, но в конечном итоге получать ошибкуconnect amazon mysql с JDBC через удаленный сервер

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. 

Я использую jsch.jar для подключения к удаленному серверу, затем вызвать соединитель JDBC пытается соединиться БД MySQL, я успешно подключен к удаленному сервер пока я не могу подключиться БД MySQL на Амазонке, вот мой код

testPutty t = new testPutty(); 
     t.connect("admin", "", "xx:xx:xx:xx", "openSSHPrivateKey", 22); 
     t.connect(); 
     System.out.println("connected"); 
     Class.forName("com.mysql.jdbc.Driver"); 
     DriverManager.getConnection("jdbc:mysql://staging.ppyhcsxnlkji.ap-southwest-1.rds.amazonaws.com:3306/staging","superuser","password"); 
     System.out.println("hello world"); 
     t.close(); 
+0

Непонятно, что вы просите. Вы пытаетесь установить соединение с сервером MySQL через туннель ssh? Если это так, вам нужно указать конфигурацию туннеля (локальные и удаленные порты) при настройке ssh-соединения, а затем подключиться к этому порту на _localhost_. Если нет, то непонятно, зачем вам ssh-соединение. –

+0

да именно то, что вы говорите, но я понятия не имею, как указать туннель. Обращайтесь ко мне с образцом кода, поскольку я только начал изучать SSH с помощью jsch.jar –

+0

Прочитайте справочную страницу SSH для параметров командной строки. Исходящий туннель настраивается с помощью '-Lnnnn: host: mmmm', где' nnnn' является локальным портом, 'host' является хостом для подключения в дальнем конце, а' mmmm' является удаленным портом. Что такое 'testPutty'? Это оболочка, которую вы написали для командной строки? BTW, имена классов в Java должны начинаться с буквы верхнего регистра. –

ответ

1

Сначала настроить туннель SSH. Вы не показали, что такое testPutty, поэтому я предполагаю, что это тонкая оболочка Java вокруг вызова командной строки Putty. Опция командной строки для создания туннеля является

-L[localport]:[host]:[remoteport] 

Для примера это будет

-L3306:staging.ppyhcsxnlkji.ap-southwest-1.rds.amazonaws.com:3306 

Это создает туннель, который направляет подключения к локальному порту 3306 на порт 3306 на данном хосте (staging...amazonaws.com) на порт 3306, маршрутизируемый через хост, который является целью команды SSH (в вашем примере xx:xx:xx:xx).

Затем строка подключения необходимо использовать localhost вместо реального пульта дистанционного управления:

jdbc:mysql://localhost:3306/staging 

Если 3306 на локальном хосте не доступны, потому что вы также работаете локальную копию MySQL, просто выберите другой не использовался порт.

+0

только что получил понимание сегодня, спасибо большое! –

Смежные вопросы