使用Java远程访问MySQL数据库时出错

时间:2016-01-14 21:22:53

标签: java mysql database mysql-workbench server-communication

您好心爱的StackOverflow社区。

所以,我是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,UsernamePassword就像我使用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;
    }  
}

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

到目前为止,你所尝试的一切都与你应该做的完全相反。导致MySQL服务器绑定到127.0.0.1或“localhost”将阻止来自localhost外部的任何连接。

您需要做的是将其绑定到防火墙中的0.0.0.0和打开端口3306。