Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中通过SSH连接SQL数据库_Java_Database_Ssh - Fatal编程技术网

在Java中通过SSH连接SQL数据库

在Java中通过SSH连接SQL数据库,java,database,ssh,Java,Database,Ssh,为什么这个代码不起作用?与ssh的连接正常,但在服务器上找不到数据库。。。为什么 public static void main(String[] args) throws SQLException { String host="ssh.example.com"; String rhost="localhost"; int rport=3306; int lport=4321; String user="example.com"; String

为什么这个代码不起作用?与ssh的连接正常,但在服务器上找不到数据库。。。为什么

public static void main(String[] args) throws SQLException {

    String host="ssh.example.com";
    String rhost="localhost";
    int rport=3306;
    int lport=4321;

    String user="example.com";
    String password="sshPass";

    String dbuserName = "example_com";
    String dbpassword = "dbPass";
    String url = "jdbc:mysql://localhost:3306/example_com";
    String driverName="com.mysql.jdbc.Driver";
    Session session= null;

    try{

        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        JSch jsch = new JSch();
        session=jsch.getSession(user, host, 22);
        session.setPassword(password);
        session.setConfig(config);
        session.connect();
        System.out.println("Connected");
        int assinged_port=session.setPortForwardingL(lport, rhost, rport);
        System.out.println("localhost:"+assinged_port+" -> "+rhost+":"+rport);
        System.out.println("Port Forwarded");

        //mysql database connectivity                  
        Class.forName(driverName);
        dbConn  = DriverManager.getConnection (url, dbuserName, dbpassword);

        System.out.println ("Database connection established");
        System.out.println("DONE");

 String sql = "SELECT * FROM client ";

 PreparedStatement ps = dbConn.prepareStatement(sql);
 ResultSet rs = ps.executeQuery();
 while (rs.next()){
  System.out.println("*** "+rs.getString("name")+" ***");
 }


    }catch(JSchException | ClassNotFoundException | SQLException e){
        e.printStackTrace();            
    }finally{
        if(dbConn != null && !dbConn.isClosed()){
            System.out.println("Closing Database Connection");
            dbConn.close();
        }
        if(session !=null && session.isConnected()){
            System.out.println("Closing SSH Connection");
            session.disconnect();
        }
    }
}
}

它正在连接到主机,但未连接到数据库

Connected
localhost:4321 -> localhost:3306
Port Forwarded
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'example_com'

我在服务器上有example_com数据库。

但是您没有使用ssh进行DB连接-它们没有以任何方式连接。我尝试过使用host:ssh.example.com.sql作为我的数据库,但它给了我未知的主机异常:com.jcraft.jsch.JSchException:java.net.UnknownHostException:ssh.example.com.mysqluse您的ip地址服务器。我应该如何对数据库使用ssh?ssh用于Shell而不是DB连接