您好心爱的StackOverflow社区。 p>
所以,我是Java和MySQL开发的新手,长话短说,我试图让设备使用MySQL数据库(以及MySQL Workbench提供的工具(v5.6))通过互联网进行通信,我的PC作为服务器和我创建的Java程序。并且所有这些都没有提供域名,而是我的服务器IP。我已完成了我的研究,但现在我已经到了必须哭的地步。
问题:当我的connect
变量从localhost:3306
获得连接时,似乎所有人都正常工作,但我只是想从互联网上访问它,我尝试了各种各样的事情#&#总而言之。
失败1 - 我试图操纵C:\ ProgramData \ MySQL上的
my.ini
文件 Workbench 5.6 \将bind-address
设置为127.0.0.1,然后设置为我从ipconfig
(CMD)获得的IPv4,然后再访问mypublicip'来自http://www.whatismypublicip.com/。
它没有用。
失败2 - 我尝试编辑MySQL Workbench的连接 - >
Hostname
=' mypublicip',port
= 3306,Username
和Password
就像我使用Hostname
= localhost进行测试一样。
这对于MySQL Workbench来说并不起作用。我无法从Workbench连接到我的服务器,当我尝试设置Remote Management
对话框时,我不知道哪些有效,哪些无效。
失败3 - 我尝试在Workbench中保持
Hostname
= localhost,然后我改变了getConnection()
方法从' mypublicip'返回连接 IP。我无法使用我的IPv6(我不知道如何在getConnection()
中使用它),所以我使用了我发现的公共ID http://www.whatismypublicip.com/。当我这样做时出现错误 这样说:"无法连接到数据库服务器。通讯链接 失败。成功发送到服务器的最后一个数据包为0 几毫秒之前。驱动程序没有收到来自的任何数据包 。服务器#&34; 。这就是我尝试失败的原因
我的Java App中的代码创建了programm和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;
}
}
答案 0 :(得分:0)
如果您的sql server在路由器后面,请尝试将流量从某个路由器端口重新路由到您的服务器MySql端口。
答案 1 :(得分:0)
我发现了问题!真正的问题是我没有在我的路由器防火墙上打开一个端口,程序可以通过互联网访问!转到Internet向导,创建一个端口(与MySQL服务器使用的端口相同)并将其应用于您的服务器计算机。然后你必须找到你的IP并在你的代码中使用它。就这样!快乐的编码。
答案 2 :(得分:0)
到目前为止,你所尝试的一切都与你应该做的完全相反。导致MySQL服务器绑定到127.0.0.1或“localhost”将阻止来自localhost外部的任何连接。
您需要做的是将其绑定到防火墙中的0.0.0.0和打开端口3306。