亲爱的 StackOverflow 社区,您好。
因此,我是 Java 和 MySQL 开发的新手,长话短说,我正在尝试使用 MySQL 数据库(以及 MySQL Workbench (v5.6) 提供的工具)使设备通过 Internet 进行通信,我的 PC 作为服务器和我创建的 Java 程序。所有这些都没有提供域名,而是我的服务器 IP。我已经完成了我的研究,但现在我不得不哭泣寻求帮助。
connect
问题:当我的变量从 获取连接时,似乎一切正常localhost:3306
,但我只想从互联网访问它,我尝试了各种根本没有成功的事情。
失败 1 - 我试图操作
my.ini
C:\ProgramData\MySQL Workbench 5.6\ 上的文件,将其设置bind-address
为 127.0.0.1,然后设置为我从 (CMD) 获取的 IPv4 ,然后从http://www.whatismypublicipipconfig
获取“mypublicip” .com/。
它没有用。
失败 2 - 我尝试从 MySQL Workbench ->
Hostname
= 'mypublicip',port
=3306 编辑连接,Username
就像我使用=localhostPassword
测试它时一样。Hostname
这对 MySQL Workbench 不起作用。我无法从 Workbench 连接到我的服务器,当我尝试设置Remote Management
对话框时,我不知道哪些有效,哪些无效。
失败 3 - 我尝试
Hostname
在 Workbench 中保持为 =localhost,并更改了getConnection()
从“mypublicip”ip 返回连接的方法。我无法使用我的 IPv6(我不知道如何在 中使用它getConnection()
),所以我使用了从 http://www.whatismypublicip.com/找到的公共 ID 。当我这样做时,出现错误:“无法连接到数据库服务器。通信链路故障。成功发送到服务器的最后一个数据包是 0 毫秒前。驱动程序没有收到来自服务器的任何数据包。” . 这就是为什么我尝试了失败 1 号
那是我的 Java 应用程序中创建程序和数据库之间连接的代码。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;
}
}