JDBC / Java应用程序端口扫描?

时间:2014-11-29 23:37:48

标签: java mysql jdbc port-scanning directadmin

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

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

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

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

顺便说一句,在try / catch中,我在连接中做了catch,将db连接到我的localhost,以便我可以继续工作并测试我的应用程序。

这是我的代码:

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;
    }

2 个答案:

答案 0 :(得分:1)

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

   private static String servidor = "jdbc:mysql://"+host+":3306/" + schema;

答案 1 :(得分:0)

您可以在网址中指定端口。另外,我会使用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);