Здравствуйте, к любимому сообществу StackOverflow.Ошибка доступа к базе данных MySQL удаленно с помощью Java
Итак, я новичок в разработке Java и MySQL, и, короче говоря, я пытаюсь подключить устройства через Интернет с использованием базы данных MySQL (и инструментов, предоставляемых MySQL Workbench (v5.6)), мой компьютер в качестве сервера и Java-программу, которую я создал. И все, что без предоставления имени домена, но мой IP-адрес сервера. Я провел свое исследование, но теперь я в такой ситуации, когда мне приходится кричать о помощи.
Проблема: Кажется, что все работают JUST FINE, когда переменная connect
получает соединение от localhost:3306
, НО я просто хочу получить к ней доступ из Интернета, и я пробовал различные вещи, которые просто не сработали.
Отказ 1 - я пытался манипулировать
my.ini
файл на C: \ ProgramData \ MySQL Workbench 5.6 \ установивbind-address
на 127.0.0.1, то на мой IPv4 я получил отipconfig
(CMD), а затем " mypublicip 'от http://www.whatismypublicip.com/.
и не работает.
Отказ 2 - я пытался изменить соединение с MySQL Workbench ->
Hostname
= 'mypublicip',port
= 3306,Username
иPassword
, как это было, когда я тестировал его сHostname
= локальный.
Это просто не работает для MySQL Workbench. Я не мог подключиться к своему серверу из Workbench, и когда я попытался настроить диалог Remote Management
, я не знал, что работает, а что нет.
Отказ 3 - я пытался держать в
Hostname
= локальный в Workbench, и я изменил методgetConnection()
вернуть соединение с «mypublicip» ф. Я не мог работать с моим IPv6 (я не знаю, как его использовать вgetConnection()
), поэтому я использовал общедоступный идентификатор, который я нашел от http://www.whatismypublicip.com/. Когда я это сделал, произошла ошибка : «Не удается подключиться к серверу базы данных. Ошибка связи . Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов с сервера ». , Вот почему я пробовал сбой №1
Это код моего приложения Java, который создает соединение между программой и db. connectMessage
является JFrame, что дает соответствующее сообщение пользователю об успехе или провале связи, код ошибки и сообщение об ошибке:
package aPackage;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author manosmer
*/
public class MySQLConnector {
private Connection connect;
public MySQLConnector(){
connect = null;
}
public Connection connecting(UsersInfo user) throws ClassNotFoundException{
try{
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/connectmessages", user.getName(), user.getPassword());
connectMessage messageconn = new connectMessage();
messageconn.setConnection(connect, user);
}catch(SQLException ex){
UserLogin errorlogin = new UserLogin();
connectMessage messageconn = new connectMessage();
messageconn.failed(ex);
}
return connect;
}
}
'128.0.0.1'? надеюсь, это просто опечатка ... если вы имели в виду 127.0.0.1, то это НЕ действительный адрес «интернет». он не является маршрутизируемым и предназначен для того, чтобы позволить машине разговаривать с самим собой. вы не можете разговаривать с 127.0.0.1 в другой машине, потому что ВСЕ ip-машины автоматически 127.0.0.1 –
у вас возникли проблемы с удаленным удаленным и локальным работами, так почему вы вставляете код из своего локального соединения? вставьте код, с которым у вас проблемы. – eis
@MarcB да, я сделал опечатку там .... Я знаю это, вот почему это сработало ... вам не хватает точки, я думаю –