0

亲爱的 StackOverflow 社区,您好。

因此,我是 Java 和 MySQL 开发的新手,长话短说,我正在尝试使用 MySQL 数据库(以及 MySQL Workbench (v5.6) 提供的工具)使设备通过 Internet 进行通信,我的 PC 作为服务器和我创建的 Java 程序。所有这些都没有提供域名,而是我的服务器 IP。我已经完成了我的研究,但现在我不得不哭泣寻求帮助。

connect问题:当我的变量从 获取连接时,似乎一切正常localhost:3306,但我只想从互联网访问它,我尝试了各种根本没有成功的事情。

失败 1 - 我试图操作my.iniC:\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;
    }  
}
4

3 回答 3

0

我发现了问题!真正的问题是我没有在我的路由器防火墙上打开一个端口,让程序可以通过互联网访问!转到您的 Internet 向导,创建一个端口(与您的 MySQL 服务器使用的端口相同)并将其应用于您的服务器计算机。然后你必须找到你的 IP 并在你的代码中使用它。就这样!快乐编码。

于 2016-01-25T19:35:57.007 回答
0

到目前为止,您所做的一切都与您应该做的完全相反。使 MySQL 服务器绑定到 127.0.0.1 或 'localhost' 将阻止来自 localhost 外部的任何连接。

您需要做的是让它绑定到 0.0.0.0 并在防火墙中打开端口 3306。

于 2016-01-25T20:08:44.443 回答
0

如果您的 sql 服务器位于路由器后面,请尝试将流量从某个路由器端口重新路由到您的服务器 MySql 端口。

于 2016-01-14T23:45:01.847 回答