0

我的主机出现问题,因为我一直被端口扫描阻止。尽管他们一直将我列入白名单,但我的 IP 是动态的,所以这并不是真正的解决方案。

我一直在检查,我用来直接连接到主机中的 MySQL 数据库的唯一 2 个应用程序是 MySQL Workbench 和我正在开发的应用程序。我猜 MySQL Workbench 不是进行端口扫描的,因为我明确要求它连接到端口 3306。

另一方面,我正在制作的应用程序似乎没有直接连接到端口。我的理解是 JDBC 会自动执行此操作,但应用程序并没有这样做。因此,我的问题是,我怎样才能让我的应用程序直接指向端口 3306?

也有可能我的应用程序不是负责端口扫描的应用程序,它是别的东西,但是,我可以弄清楚是什么。我不使用任何类型的安全软件。

顺便说一句,在我的连接中执行的 try/catch 中,我让 catch 将数据库连接到我的本地主机,以便我可以继续工作和测试我的应用程序。

这是我的代码:

import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.ArrayList;

import javax.imageio.ImageIO;
import javax.swing.JButton;

import Controller.utilidadesGenericas;
import Objetos.Generos;
import Objetos.Tema;
import Objetos.Usuario;
import Objetos.Videojuego;
import View.errorPopUp;

public class database {

    protected Connection conexion;
    protected Statement statement;

    protected static String schema = "federicoanelli_S"; 
    private static String host = "67.222.1.89";
    private static String user = "federicoanelli_S";
    private static String pass = "(PASSWORD HERE)";
    private static String servidor = "jdbc:mysql://"+host+"/" + schema;

    //protected static String schema = "Streamz";
    //private static String user = "root";
    //private static String pass = "";
    //private static String servidor = "jdbc:mysql://localhost/" + schema;


    public database() {
        this.init();
    }

    public void init() {

        try {
            Class.forName("com.mysql.jdbc.Driver");//com.mysql.jdbc.Driver
            conexion = DriverManager.getConnection(servidor, user, pass);
        } catch (Exception e) {
            this.schema = "Streamz";
            this.user = "root";
            this.pass = "";
            this.servidor = "jdbc:mysql://localhost/"+this.schema;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conexion = DriverManager.getConnection(servidor, user, pass);
            } catch (ClassNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }//com.mysql.jdbc.Driver
 catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

            e.printStackTrace();
        }
    }

    public Connection getConexion() {
        return conexion;
    }
4

2 回答 2

1

您可以在主机后直接添加端口:

   private static String servidor = "jdbc:mysql://"+host+":3306/" + schema;
于 2014-11-29T23:52:14.427 回答
0

您可以在 URL 中指定端口。另外,我会String.format(String, Object...)用来建造servidor类似的东西

private static String host = "67.222.1.89";
private static int port = 3306;
protected static String schema = "federicoanelli_S"; 
private static String servidor = String.format("jdbc:mysql://%s:%d/%s",
    host,port,schema);
于 2014-11-29T23:53:10.170 回答